GNU/Linux >> Linux の 問題 >  >> Linux

Docker-compose:sudo なしではビルドできませんが、sudo なしでコンテナーを実行できます

この問題の原因は、root:root のボリューム マウント ポイントがあることです。 所有者とグループが原因で、この動作が発生しました。

この問題の解決策は、.dockerignore という名前のファイルを作成することです すべてのフォルダをボリュームとしてマウントします。

たとえば、次の docker-compose.yml がある場合

version: '2'
services:
  data_map_prod:
    build:
      context: .
      dockerfile: Dockerfile
    image: 'pcmagas/data-map:latest'
    links:
      - 'neo4j'
      - 'mongodb'
    volumes:
      - './docker-volumes/app_dev:/var/log/datamap'
    ports:
      - "9780:9780"
    environment:
      NEO4J_HOST: 'neo4j'
      MONGO_CONNECTION_STRING: 'mongodb://mongodb:map'

  data_map_dev:
    build:
      context: .
      dockerfile: Dockerfile_dev
    image: 'pcmagas/data-map:dev'
    links:
      - 'neo4j_dev'
      - 'mongodb'
    volumes:
      - './src:/opt/map/src'
      - './www:/opt/map/www'
      - './package.json:/opt/map/package.json'
      - './docker-volumes/app_dev:/var/log/datamap'
    ports:
      - "9781:9780"
    environment:
      NEO4J_HOST: 'neo4j_dev'
      NEO4J_USER: 'neo4j'
      NEO4J_PASSWORD: 'neo4j'
      MONGO_CONNECTION_STRING: 'mongodb://mongodb:map_dev'

  neo4j_dev:
    image: 'neo4j'
    ports:
      - '7474:7474'
    volumes:
      - './docker-volumes/neo4j_dev/data:/data'
    environment:
      NEO4J_AUTH: 'neo4j/neo45j'

  neo4j:
    image: 'neo4j'
    volumes:
      - './docker-volumes/neo4j/data:/data'
    environment:
      NEO4J_AUTH: 'neo4j/neo45j'

  mongodb:
    image: 'mongo'
    ports:
      - '27017:27017'
    volumes:
      - './docker-volumes/mongodb/:/data/db'

次に、次の .dockerignore を作成する必要があります :

./docker-volumes

ご覧のとおり、すべてのボリュームは ./docker-volumes にあります

さらに、https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083

で解決策を見つけることができます。

その理由の 1 つは、docker イメージのビルドに使用されるファイルが現在のユーザーによって所有されていないことです。このコマンドを使用してこれを変更できます:

sudo chown -R $USER .

Linux
  1. Podmanでsudoを使用せずにLinuxでコンテナを実行する

  2. Unix では、最初にそのディレクトリに cd を実行せずにディレクトリで 'make' を実行できますか?

  3. 一致を印刷せずに、一致するようにgrepを使用するにはどうすればよいですか?

  1. 同じ引数で別のコマンドを実行するにはどうすればよいですか?

  2. sudo なしで ifconfig を実行する

  3. スワップなしで Oracle サーバーを実行できますか?

  1. パスワードプロンプトなしでルートとして特定のプログラムを実行する方法は?

  2. Ssh –パスワードなしでSudoを実行できる場合、Sudoを実行するにはTtyが必要ですか?

  3. sudoなしでファイルをsubuidにchownするにはどうすればよいですか