Le fichier docker-compose https://docs.docker.com/compose/compose-file/#/volumes-volume-driver montre différentes façons de monter les sous-répertoires Host par rapport au fichier compose.
Par exemple:
volumes: # Spécifiez simplement un chemin et laissez le moteur créer un volume -/var/lib/mysql
# Spécifiez un mappage de chemin absolu -/opt/data:/var/lib/mysql
# Chemin sur l'hôte, par rapport au fichier Compose - ./cache:/tmp/cache
# Chemin relatif à l'utilisateur - ~/configs:/etc/configs /: ro
# Volume nommé - volume de données:/var/lib/mysql
Est-il possible de monter un sous-répertoire d'un volume nommé à un emplacement spécifique? Par exemple quelque chose comme ci-dessous, que j'ai essayé, mais qui ne semble pas fonctionner.
# Named volume
- datavolume/sql_data:/var/lib/mysql
Je suppose que je pourrais être en mesure de gérer cela en montant le volume de données à un emplacement comme /data
puis dans les Dockerfiles de chaque conteneur, créez des liens symboliques à partir des sous-répertoires vers les emplacements.
par exemple dans un fichier docker-compose.yml
volumes:
- datavolume:/data
puis dans le conteneur Dockerfile
RUN ln -s /data/sql_data /var/lib/mysql
J'ai commencé à emprunter cette voie mais cela devenait désordonné et ne fonctionnait pas. Avant d'abandonner cette approche ou d'investir du temps à la déboguer, je voulais m'assurer qu'il n'y avait aucun moyen de simplement spécifier les sous-répertoires d'un vollume nommé.
Non car compose/config/config.py#load(config_details)
vérifier si datavolume/sql_data
Correspond à un volume nommé (dans compose/config/validation.py#match_named_volumes()
)
datavolume
le ferait, datavolume/sql_data
ne le serait pas.
Comme memetech le souligne dans les commentaires , c'est un problème de suivi depuis avril 2017:moby/moby
Problème 32582 : " [fonctionnalité] Autoriser le montage de sous-répertoires de volumes nommés ".