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

如何在Render.com用Gradle构建SpringBoot?Docker构建步骤未执行报错

问题分析与解决

问题根源

你的Dockerfile采用了多阶段构建,但runtime阶段直接尝试添加build/libs/docker-0.0.1-SNAPSHOT.jar,而多阶段构建的各个阶段是完全隔离的——builder阶段生成的jar包仅存在于该阶段的容器环境中,runtime阶段无法直接访问当前构建上下文外的文件,因此会报错找不到目标jar包。

修复方案

修改Dockerfile,在runtime阶段使用COPY --from=builder命令,显式从builder阶段复制构建好的jar包:

#
# Build stage
#
FROM gradle:jdk17-jammy AS builder
COPY . .
RUN gradle build

#
# Package stage
#
FROM eclipse-temurin:17-jdk-jammy as runtime
EXPOSE 8080
# 从builder阶段复制生成的jar包到当前阶段
COPY --from=builder /home/gradle/build/libs/docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

关键说明

  • gradle:jdk17-jammy镜像的默认工作目录是/home/gradle,因此gradle build生成的jar包完整路径为/home/gradle/build/libs/,复制时需要写全路径。
  • 如果你的项目Gradle配置生成的jar包名称或路径有变化,需要对应调整复制路径。

额外验证建议

  1. 构建镜像前,可先在本地执行gradle build,确认build/libs/目录下是否生成了正确的jar包,避免因项目构建失败导致文件缺失。
  2. 检查.dockerignore文件,确保没有错误忽略build目录(多阶段构建中builder阶段会重新复制代码构建,这不是核心问题,但本地调试时需注意)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:05:29