Die Ursache des Problems liegt darin, dass Sie einen Volume-Bereitstellungspunkt mit root:root haben Eigentümer &Gruppe und dieses Verhalten verursacht hat.
Die Lösung für dieses Problem besteht darin, eine Datei mit dem Namen .dockerignore zu erstellen und legen Sie alle Ordner als Volumes bereit.
Zum Beispiel, wenn Sie den folgenden docker-compose.yml haben
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'
Dann sollten Sie den folgenden .dockerignore erstellen :
./docker-volumes
Wie Sie sehen können, befinden sich alle Bände in ./docker-volumes Ordner.
Außerdem finden Sie Lösungen unter:https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083
Einer der Gründe ist, dass keine Datei, die zum Erstellen des Docker-Images verwendet wird, dem aktuellen Benutzer gehört. Wir können dies mit diesem Befehl ändern:
sudo chown -R $USER .