在我的 docker compose 服务中,我有以下内容:
volumes:
- ~/DockerStuff/Projects:/root/Documents/Projects
- ~/DockerStuff/Downloads:/root/Downloads
但是当我跑
docker compose
时,我被告知:
Error response from daemon: invalid mount config for type "bind": bind source path does not exist
我不断看到有人说你可以创建绑定卷,如果主机目录不存在,Docker 将动态创建它。 但这些似乎特定于 DockerFile 设置而不是撰写文件。
docker compose 中也可以实现这样的功能吗? :)
要为 docker-compose 卷绑定创建主机文件夹(如果不存在),只需将
bind.create_host_path
添加到卷部分 -
volumes:
- type: bind
source: localFolder/subFolderIfNeeded
target: /data
bind:
create_host_path: true
注意:在 Docker compose 2.15.1 上测试
~
符号不会被 docker compose 扩展。
你必须依赖这种方法:
构建脚本
HOME=${HOME} docker-compose ... command options ...
docker 撰写 yaml
volumes:
- ${HOME}/DockerStuff/Projects:/root/Documents/Projects
- ${HOME}/DockerStuff/Downloads:/root/Downloads
我不确定这是否在 2021 年实现,但目前在 Docker Desktop 4.34.2 中仅共享某些目录。这些可以在“首选项”>“资源”>“虚拟文件共享”下的文件共享中进行设置。存在一些默认的,但源需要在其中之一下可用或需要添加。请参阅有关设置的文档