| # 阶段 1: builder - 构建应用 JAR 包并准备分层结构 |
| FROM maven:3.9.9-eclipse-temurin-24-alpine AS builder |
| # 复制 pom.xml 文件,以便 Maven 可以下载依赖 |
| # 这一步利用 Docker 缓存,如果 pom.xml 没有变化,则不会重新下载依赖 |
| # spring-boot-maven-plugin 会生成一个可执行 JAR (例如 demo-0.0.1-SNAPSHOT.jar), |
| # 并且在 target 目录下也会有 BOOT-INF/lib (所有依赖) 和 BOOT-INF/classes (您的应用代码) 等分层结构 |
| RUN mvn package -DskipTests |
| # 阶段 2: runner - 运行最终应用 JAR 包的精简运行时环境 |
| # 使用轻量级的 OpenJDK JRE 镜像,只包含运行时环境,减小镜像大小 |
| FROM openjdk:17-jdk-slim-buster AS runner |
| COPY --from=builder /app/target/demo-0.0.1-SNAPSHOT.jar app.jar |
| # 直接运行 Spring Boot JAR(推荐方式) |
| ENTRYPOINT ["java", "-jar", "app.jar"] |