Как установить путь на хост для именованного тома в файле 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/...