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

在Docker容器内构建Maven项目时遇target目录不存在错误求助

Docker构建Maven项目报错排查与解决

错误原因

  • Docker多阶段构建中,每个FROM指令都会启动独立的构建阶段,新阶段默认无法访问前一阶段的文件系统
  • 你在第二个阶段执行COPY target/*.jar app.jar时,Docker会在本地构建上下文目录中查找target文件夹,但该目录要么不存在,要么你实际需要的是builder阶段构建生成的jar包,因此触发"no such file or directory"错误

解决办法

修改Dockerfile,在COPY指令中通过--from=builder指定从builder阶段复制构建产物:

FROM maven:3.8.1-openjdk-17 as builder
COPY src /tmp/src/
COPY pom.xml /tmp/
WORKDIR /tmp/
RUN mvn clean install

FROM openjdk:17-jre-slim
WORKDIR /tmp/app
# 从builder阶段的/tmp/target目录复制jar包
COPY --from=builder /tmp/target/*.jar app.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","app.jar"]

额外优化建议

  • 第二阶段使用openjdk:17-jre-slim镜像替代maven镜像,大幅减少最终镜像体积
  • 若无需执行测试,可在maven构建命令中添加-DskipTests参数加快构建速度:
    RUN mvn clean install -DskipTests
    

内容的提问来源于stack exchange,提问作者Thiago Salgado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:35:35