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

Exemple ci-dessous crée dbdata nommé volume et références à l'intérieur de 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 d'accès pour le volume par défaut:

/ var/lib/docker/volumes/project_name _dbdata

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

31
demandé sur Community 2016-04-03 17:59:03

2 réponses

local le pilote de volume permet d'utiliser des montages arbitraires; en utilisant un bind monter vous pouvez réaliser exactement cela.

pour configurer un volume nommé qui est monté dans /srv/db-data, votre docker-compose.yml ressemblerait à 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 de composition, mais https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 n'indique pas que il ne doit pas travailler.

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

11
répondu Christian Ulbrich 2018-06-15 10:11:38

l'emplacement des volumes nommés est géré par docker; si vous voulez spécifier l'emplacement vous-même, vous pouvez soit "bind mount" un répertoire hôte, soit utiliser un plugin de volume qui vous permet de spécifier un chemin.

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

6
répondu thaJeztah 2017-05-23 12:00:21