GNU/Linux >> Tutoriales Linux >  >> Linux

Docker-compose:no se puede compilar SIN sudo pero puedo ejecutar contenedores sin él

La causa del problema es que tiene un punto de montaje de volumen con root:root propietario y grupo y causó este comportamiento.

La solución a este problema es crear un archivo llamado .dockerignore y poner todas las carpetas montadas como volúmenes.

Por ejemplo, si tiene el siguiente 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'

Entonces deberías crear el siguiente .dockerignore :

./docker-volumes

Como puede ver, todos los volúmenes están en ./docker-volumes carpeta.

Además, puede encontrar soluciones en:https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083


Una de las razones es que cualquier archivo utilizado para crear la imagen de la ventana acoplable no es propiedad del usuario actual. Podemos cambiar esto usando este comando:

sudo chown -R $USER .

Linux
  1. Agregar usuario al grupo pero no reflejado cuando se ejecuta la identificación

  2. ¿Cómo puedo configurar y ejecutar PhantomJS en Ubuntu?

  3. ¿Cómo puedo usar grep para hacer coincidir pero sin imprimir las coincidencias?

  4. No se puede ejecutar Sonar Server debido a que Elasticsearch no se puede ejecutar como root

  5. ¿Cómo puedo cambiar un archivo a un subuid sin sudo?

Cómo ejecutar el comando Sudo sin contraseña

Cómo ejecutar comandos particulares sin contraseña Sudo en Linux

Cómo ejecutar comandos Sudo sin contraseña

Ssh:¿necesito un Tty para ejecutar Sudo si puedo Sudo sin contraseña?

Cómo ejecutar comandos sudo sin contraseña

¿Puedo ejecutar un servidor Oracle sin intercambio?