web-dev-qa-db-fra.com

Comment définir un chemin sur l'hôte pour un volume nommé dans docker-compose.yml

L'exemple ci-dessous crée dbdata le volume nommé et le référence dans db service:

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local

(de https://stackoverflow.com/a/35675553/4291814 )

Je peux voir le chemin par défaut du volume:

/ var/lib/docker/volumes/ nom_projet _ dbdata

Ma question est de savoir comment configurer le chemin sur l'hôte pour le volume dbdata.

59
misha

Avec le pilote de volume local, vous pouvez utiliser des montages arbitraires. en utilisant un bind mount , vous pouvez y parvenir exactement.

Pour configurer un volume nommé monté dans/srv/db-data, votre fichier docker-compose.yml ressemblera à ceci:

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/srv/db-data'

Je ne l'ai pas testé avec la version 2 du format de fichier compose, mais https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 n'indique pas , ça ne devrait pas marcher.

Je ne l'ai pas non plus testé sous Windows ...

47
Christian Ulbrich

L'emplacement des volumes nommés est géré par le menu fixe. si vous souhaitez spécifier vous-même l'emplacement, vous pouvez soit "lier le montage" à un répertoire d'hôte, soit utiliser un plug-in de volume vous permettant de spécifier un chemin.

Vous pouvez trouver certains détails dans une autre réponse que j'ai postée récemment; https://stackoverflow.com/a/36321403/1811501

8
thaJeztah