Как установить путь на хост для именованного тома в файле docker-compose.yml

Пример ниже создает dbdata с именем volume и ссылается на нее внутри службы db:

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

(из qaru.site/info/334626/...)

Я вижу путь для тома по умолчанию:

/var/lib/docker/volumes/<project_name>_dbdata

У меня вопрос, как настроить путь на хосте для тома dbdata?

Ответы

Ответ 1

Драйвер тома local позволяет использовать произвольное монтирование; с помощью bind mount вы можете добиться именно этого.

Для настройки именованного тома, который монтируется в /srv/db-data, ваш docker-compose.yml будет выглядеть следующим образом:

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'

Я не проверял его с версией 2 формата файла создания, но https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 не указывает, что он не должен работать.

Я также не проверял это на Windows...

Ответ 2

Местоположение названных томов управляется докером; если вы хотите указать местоположение самостоятельно, вы можете либо "привязать монтирование" к каталогу хоста, либо использовать плагин тома, который позволяет указать путь.

Вы можете найти некоторые подробности в другом ответе, который я опубликовал недавно; fooobar.com/info/334624/...