You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose挂载排除target目录却在宿主机创建空目录的解决方法

解决Docker Compose挂载时宿主机生成空target目录的问题

你的配置里,先把宿主机../services/myApp绑定挂载到容器内/code/services/myApp,再用匿名卷挂载容器内的/code/services/myApp/target——这种方式之所以会在宿主机生成空target目录,是因为Docker启动容器时,会先在绑定挂载的宿主机目录下创建对应的子目录,再完成匿名卷的挂载。

要避免这个问题,有两种实用方案:

方案一:拆分绑定挂载(推荐)

不要直接挂载整个myApp目录,而是只挂载需要与宿主机同步的子目录,跳过target。比如myApp下有src、config等需要同步的目录,配置改成:

volumes:
  - ../services/myApp/src:/code/services/myApp/src
  - ../services/myApp/config:/code/services/myApp/config
  # 按需添加其他需要同步的子目录

这样容器内的target目录完全独立,不会在宿主机生成任何相关目录。

方案二:提前在镜像中创建target目录并设置权限

如果你必须挂载整个myApp目录,可以在构建镜像时,提前在/code/services/myApp下创建target目录,并设置好合适的权限(比如和宿主机myApp目录一致的用户组权限)。这样启动容器时,Docker不会在宿主机创建空的target目录,而是直接将匿名卷挂载到容器内已存在的target路径。

比如在Dockerfile中添加:

RUN mkdir -p /code/services/myApp/target && chown -R your_user:your_group /code/services/myApp/target

然后保持原有的compose配置即可。

内容的提问来源于stack exchange,提问作者Jevgeni Merezin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:27:07