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 .