Docker Composer - Partage nommé volume entre plusieurs conteneurs
Je suis en utilisant le menu fixe-composer et v3. Je suis en train de monter un volume dans le panneau:
./appdata:/appdata
J'aimerais avoir ceci comme un volume, puis de référence que le volume à partir de plusieurs conteneurs. Le le volume de référence pour la configuration ne montre data-volume:
comme un nom de volume, avec aucune valeur, donc il ne ressemble pas à la ci-dessus.
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume
volumes:
app-volume: ./appdata:/appdata
Cela me donne:
ERREUR: Dans le fichier './docker-composer.yml' volume 'app-volume" doit être un mappage pas une chaîne.
Évidemment, je sais que j'ai besoin de changer la volumes
paire clé/valeur, mais je ne suis pas sûr comment pour changer cela pour que je puisse partager un volume entre les services.
J'ai aussi vérifié volumes_from
mais effectivement cela permet tout simplement de l'héritage à partir d'autres conteneurs. J'ai vu quelqu'un l'utiliser volumes_from
sur un autre récipient qui contient la cartographie qu'ils veulent, mais avec command: true
définie de sorte que le conteneur est jamais réellement exécuter, ce qui me semble juste comme un hack.
Comment puis-je faire cela?
Remarque, je ne avoir de travail suivants:
nginx:
volumes:
- ./appdata:/appdata
php:
volumes:
- ./appdata:/appdata
Mais c'est juste de la duplication et est quelque chose que je suis en espérant un volume nommé pourrait m'aider à éviter 🙂
- Vous trouverez la réponse dans cette réponse: stackoverflow.com/a/49920624
Vous devez vous connecter pour publier un commentaire.
Le nom de volumes peuvent être partagés entre les conteneurs de la manière suivante:
Voici un exemple de config que j'utilise pour une meilleure compréhension. Je suis d'exposer les fichiers statiques générées à partir de mon
web
conteneur d'un volume nommé appeléstatic-content
qui est ensuite lu et servi par lenginx
conteneur:- ./appdata:/appdata
mais avec votre solution, je ne vois qu'une seule de ces valeurs?static_content
sur le système de fichiers de l'hôte?root
, et donc de ne plus être accessible en écriture par les images qui utilisent un autre utilisateur (comme le rocker/brillant)app-volume: location_in_the_container
est faux./usr/src/app
dans lenginx
conteneur et/usr/src/app/public
dans leweb
récipient obtenu de contenu d'origine, dont l'un sera utilisé et pourquoi?Cannot create container for service mobile-app: invalid volume specification: '..._appdata::rw': invalid mount config for type "volume": field Target must not be empty
j'ai vérifié le site officiel [documentation]("docs.docker.com/compose/compose-file/...) et il n'a pas vu de différence.collectstatic
dans un récipient et que les résultats seront disponibles dans un autre, mais vous ne se soucient pas de dossier depath based volumes
pour votre cas d'utilisation - nickjanetakis.com/blog/...Cela résout sans l'aide d'nommé volumes:
Ainsi, il ressemble:
./appdata
, c'est ce que je suis en train de faire. Laissez cette réponse ici bien 🙂 +1