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

Dockerfile未从docker-compose指定上下文目录复制内容问题排查

问题原因与解决方案

核心问题

你遇到的问题是容器启动时的挂载操作覆盖了镜像中已有的代码。

在你的docker-compose.yaml里,volumes字段配置的是:

volumes:
  - .:/app

这里的.是相对路径,指向的是docker-compose.yaml所在的service-orchestration目录,启动容器时,这个目录会被挂载到容器内的/app路径,直接覆盖了镜像构建时从service-one复制进去的所有代码,所以你看到的是service-orchestration的内容。

解决方案

根据你的需求,有两种处理方式:

方式1:保留代码热重载(适合开发环境)

修改volumes配置,将本地的service-one目录挂载到容器的/app:

volumes:
  - ../service-one:/app

这样挂载的路径和构建上下文一致,容器内的/app会同步本地service-one的代码,同时保留镜像中已安装的依赖,也能配合--reload实现代码修改后自动重启服务。

方式2:使用镜像内的代码(适合生产环境)

如果不需要本地代码热重载,直接删除volumes字段即可。容器会使用镜像构建时通过COPY ./ /app/复制进去的service-one代码,不会被本地目录覆盖。

验证方法

修改配置后,可进入容器验证内容:

docker-compose exec service-one ls /app

此时应该能看到service-one目录下的所有文件,比如requirements.txt、service-one应用目录等。

内容的提问来源于stack exchange,提问作者David Sigley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:40:05