Docker Compose长语法挂载卷时,主机不存在的目录无法自动创建
解决Docker Compose长语法挂载卷时自动创建主机目录的问题
你遇到的问题是Docker Compose长语法挂载bind卷时,不会自动创建主机上缺失的目标目录,而短语法原本支持这个特性。结合你的场景,有两个可行的解决办法:
方法1:启动前手动创建目录
在执行docker-compose up命令前,先手动创建需要的logs目录:
mkdir -p ./e2e/logs
这个方法简单直接,适合临时或手动部署的场景。
方法2:在Compose配置中启用自动创建主机路径
Docker Compose支持在长语法的bind挂载中添加create_host_path: true参数,开启后会自动检查并创建主机上不存在的源目录。修改后的配置如下:
version: "3.9" services: foo: image: an_image volumes: - source: ./logs target: /tmp/data type: bind bind: create_host_path: true
这个参数在Compose文件版本3.4及以上可用,你的3.9版本完全兼容,且Docker Compose 2.24版本也支持该特性,刚好满足你的需求——既使用长语法规避bug,又实现自动创建目录的功能。
你当前的报错是因为主机上/Users/user/Workspace/an-app/e2e/logs路径不存在,使用上述任一方法都可以解决这个问题。
内容的提问来源于stack exchange,提问作者Niko
相关产品推荐
相关产品推荐

