Docker化Maven Spring Boot应用遇release version 21不支持错误
解决方案:适配Java 21的Dockerfile调整
你的核心问题是Docker构建阶段和运行阶段使用的JDK/JRE版本与项目要求的Java 21不匹配:
- 构建阶段用的
maven:3.8.4-jdk-11是JDK 11,无法编译Java 21版本的代码 - 运行阶段用的
openjdk:8-jre-alpine是JRE 8,Spring Boot 3.x要求最低Java 17,根本跑不了你的应用
步骤1:修改Dockerfile
将Dockerfile替换为以下内容,确保构建和运行环境都适配Java 21:
# 构建阶段:使用支持Java 21的Maven镜像 FROM maven:3.9.6-eclipse-temurin-21 AS build COPY src /app/src COPY pom.xml /app WORKDIR /app RUN mvn clean install -U # 运行阶段:使用轻量的Java 21 JRE镜像 FROM eclipse-temurin:21-jre-alpine COPY --from=build /app/target/mal-randomizer-0.0.1-SNAPSHOT.jar /app/app.jar WORKDIR /app EXPOSE 8080 CMD ["java", "-jar", "app.jar"]
步骤2:确认pom.xml配置无需额外修改
你的pom.xml已经正确配置了Java 21:
<java.version>21</java.version>符合Spring Boot 3.2.5的要求- 依赖的Spring Boot 3.2.5原生支持Java 17-21,兼容你用到的Java 16
records特性
验证方法
执行以下命令重新构建镜像并运行:
docker build -t mal-randomizer . docker run -p 8080:8080 mal-randomizer
内容的提问来源于stack exchange,提问作者Victor Fernandes Neto
相关产品推荐
相关产品推荐

