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

Render部署Spring Boot项目遇Docker缓存密钥计算失败问题求助

Render部署Spring Boot项目Docker构建失败排查与解决

问题描述

在Render.com部署Java Spring Boot项目时,Docker构建过程中出现异常,无法定位目标jar包,导致部署失败。

使用的Dockerfile

FROM maven:3-eclipse-temurin-17 AS build
COPY . .
RUN mvn clean package -Pprod -DskipTests
FROM openjdk:11-jdk-slim
COPY --from=build /target/backendaccountant-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 8080
ENTRYPOINT [“java”,“-jar”,“demo.jar”]

报错信息

Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/28.2-android/guava-28.2-android.jar (2.6 MB at 4.7 MB/s)
Aug 15 05:20:00 PM  #11 21.07 [INFO] Replacing main artifact /target/QuickMaster-1.0.0.jar with repackaged archive, adding nested dependencies in BOOT-INF/.
Aug 15 05:20:00 PM  #11 21.08 [INFO] The original artifact has been renamed to /target/QuickMaster-1.0.0.jar.original
Aug 15 05:20:00 PM  #11 21.08 [INFO] ------------------------------------------------------------------------
Aug 15 05:20:00 PM  #11 21.08 [INFO] BUILD SUCCESS
Aug 15 05:20:00 PM  #11 21.08 [INFO] ------------------------------------------------------------------------
Aug 15 05:20:00 PM  #11 21.08 [INFO] Total time:  18.303 s
Aug 15 05:20:00 PM  #11 21.08 [INFO] Finished at: 2023-08-15T08:20:00Z
Aug 15 05:20:00 PM  #11 21.08 [INFO] ------------------------------------------------------------------------
Aug 15 05:20:00 PM  #11 21.08 [WARNING] The requested profile "prod" could not be activated because it does not exist.
Aug 15 05:20:00 PM  #11 DONE 21.2s
Aug 15 05:20:00 PM  
Aug 15 05:20:00 PM  #12 [stage-1 2/2] COPY --from=build /target/backendaccountant-0.0.1-SNAPSHOT.jar demo.jar
Aug 15 05:20:00 PM  #12 ERROR: failed to calculate checksum of ref 1tvcyniff9u6m4oki7cytt7fb::xbb9zgmks3mqn1pni9p0gg08s: "/target/backendaccountant-0.0.1-SNAPSHOT.jar": not found
Aug 15 05:20:00 PM  ------
Aug 15 05:20:00 PM   > [stage-1 2/2] COPY --from=build /target/backendaccountant-0.0.1-SNAPSHOT.jar demo.jar:
Aug 15 05:20:00 PM  ------
Aug 15 05:20:00 PM  Dockerfile:5
Aug 15 05:20:00 PM  --------------------
Aug 15 05:20:00 PM     3 |     RUN mvn clean package -Pprod -DskipTests
Aug 15 05:20:00 PM     4 |     FROM openjdk:11-jdk-slim
Aug 15 05:20:00 PM     5 | >>> COPY --from=build /target/backendaccountant-0.0.1-SNAPSHOT.jar demo.jar
Aug 15 05:20:00 PM     6 |     EXPOSE 8080
Aug 15 05:20:00 PM     7 |     ENTRYPOINT [“java”,“-jar”,“demo.jar”]
Aug 15 05:20:00 PM  --------------------
Aug 15 05:20:00 PM  error: failed to solve: failed to compute cache key: failed to calculate checksum of ref 1tvcyniff9u6m4oki7cytt7fb::xbb9zgmks3mqn1pni9p0gg08s: "/target/backendaccountant-0.0.1-SNAPSHOT.jar": not found
Aug 15 05:20:00 PM  error: exit status 1

问题分析

  • jar包名称不匹配:构建日志明确显示生成的jar包是QuickMaster-1.0.0.jar,但Dockerfile中尝试复制的是backendaccountant-0.0.1-SNAPSHOT.jar,文件不存在直接导致构建失败。
  • 无效Maven Profile:日志警告The requested profile "prod" could not be activated because it does not exist,说明-Pprod指定的prod环境配置不存在,虽不影响构建成功,但属于冗余无效配置。
  • JDK版本不一致:构建阶段使用JDK 17(maven:3-eclipse-temurin-17),运行阶段使用JDK 11(openjdk:11-jdk-slim),跨版本运行可能引发兼容性问题。
  • 全角引号错误:ENTRYPOINT中的引号是中文全角格式,会导致容器启动时解析命令失败。

解决步骤

  1. 修正jar包名称:将Dockerfile中COPY指令的源jar包改为构建实际生成的QuickMaster-1.0.0.jar。
  2. 移除无效Profile:删除mvn clean package命令中的-Pprod参数,或在项目的pom.xml中添加prod环境的Profile配置。
  3. 统一JDK版本:将运行阶段的基础镜像改为JDK 17,比如openjdk:17-jdk-slim,保持与构建环境版本一致。
  4. 修正引号格式:将ENTRYPOINT中的中文全角引号替换为英文半角引号。

修正后的Dockerfile示例

FROM maven:3-eclipse-temurin-17 AS build
COPY . .
RUN mvn clean package -DskipTests
FROM openjdk:17-jdk-slim
COPY --from=build /target/QuickMaster-1.0.0.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:39:50