Dockerfile无法完整复制services目录内容,求助排查错误
问题分析与解决
你的COPY命令存在两个核心问题:
- 匹配范围过窄:
services/**/pom.xml只会匹配services目录下所有层级的pom.xml文件,完全忽略了src下的代码文件、Dockerfile等其他必要内容,自然看不到完整结构。 - 结构丢失:即使成功复制
pom.xml,Docker的这种通配符写法会把所有匹配到的pom.xml平铺到./services/目录下,原有的a/、b/子目录结构会被破坏,不仅结构不对,还会导致同名文件覆盖。
正确写法
要完整还原services目录的所有内容和结构,直接使用如下命令即可:
COPY services/ ./services/
这个命令会将本地services目录下的所有文件、子目录完整复制到镜像内的./services/路径下,完全保留原有的层级结构。
优化建议(可选)
如果不需要复制target目录(毕竟这是本地构建产物,镜像内重新构建会生成新的),可以在项目根目录创建.dockerignore文件,添加以下内容:
services/**/target/
这样COPY时会自动跳过所有target目录,减少镜像体积,也避免冗余文件干扰构建。
内容的提问来源于stack exchange,提问作者boomchickawawa
相关产品推荐
相关产品推荐

