GNU/Linux >> Belajar Linux >  >> Linux

Docker-compose:tidak dapat membangun TANPA sudo tetapi saya dapat menjalankan kontainer tanpa itu

Penyebab masalahnya adalah Anda memiliki titik pemasangan volume dengan root:root pemilik &grup dan menyebabkan perilaku ini.

Solusi untuk masalah ini adalah membuat file bernama .dockerignore dan letakkan semua folder yang dipasang sebagai volume.

Misalnya jika Anda memiliki docker-compose.yml berikut

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'

Maka Anda harus membuat .dockerignore berikut :

./docker-volumes

Seperti yang Anda lihat, semua volume ada di ./docker-volumes folder.

Selanjutnya Anda dapat menemukan solusi di:https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083


Salah satu alasannya adalah file apa pun yang digunakan untuk membuat gambar buruh pelabuhan tidak dimiliki oleh pengguna saat ini. Kita dapat mengubahnya dengan menggunakan perintah ini:

sudo chown -R $USER .

Linux
  1. Di Unix, dapatkah saya menjalankan 'make' di direktori tanpa cd'ing ke direktori itu terlebih dahulu?

  2. Tambahkan pengguna ke grup tetapi tidak tercermin saat menjalankan id

  3. Bagaimana cara mengatur &menjalankan PhantomJS di Ubuntu?

  1. Kemungkinan:sudo tanpa kata sandi

  2. Instal emacs tanpa sudo?

  3. Bagaimana saya bisa mengunyah file ke subuid tanpa sudo

  1. Jalankan container di Linux tanpa Sudo di Podman

  2. Bagaimana saya bisa menggunakan grep untuk mencocokkan tetapi tanpa mencetak kecocokan?

  3. Tidak dapat menjalankan Server Sonar karena Elasticsearch tidak dapat berjalan sebagai root