下面的示例创建 dbdata 命名卷并在 db 服务中引用它:
version: '2'
services:
db:
image: mysql
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
driver: local
(来自https://stackoverflow.com/a/35675553/4291814)
我可以看到音量的路径默认为:
的/ var / lib中/搬运工/体积/ PROJECT_NAME _dbdata
我的问题是如何在主机上为dbdata卷配置路径。
答案 0 :(得分:36)
使用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上测试过它......
答案 1 :(得分:8)
命名卷的位置由docker管理;如果你想自己指定位置,你可以"绑定mount"主机目录,或使用允许您指定路径的卷插件。
你可以在我最近发布的另一个答案中找到一些细节; https://stackoverflow.com/a/36321403/1811501
答案 2 :(得分:-1)
从docker-compose v3.2
开始,您现在可以按照以下步骤进行操作:
注意:很多,正如我想的那样,如果您使用version: "3"
,它将使用最新/最新的V3,而不是使用v3.0
,因此您必须至少指定3.2
使用以下配置方法。
https://docs.docker.com/compose/compose-file/#volumes
version: "3.2"
services:
db:
image: postgres:latest
volumes:
- type: volume
source: /opt/db/vols/dbdata
target: /var/lib/postgresql/data
volume:
nocopy: true
volumes:
dbdata:
注意:
已命名的卷必须在顶级卷键下列出,如图所示。