一个典型的 Spring Boot 镜像动辄 500–600MB,其中大半是完整的 Linux 发行版与 JDK。换成 distroless 运行时,再配合 jlink 裁剪 JDK,最终镜像可以压到 120MB 以内。
更小的镜像意味着更快的拉取、更小的攻击面,以及更短的冷启动时间——对 Serverless 与弹性伸缩尤其友好。
FROM eclipse-temurin:21-jdk AS build
RUN jlink --add-modules java.base,java.logging \
--strip-debug --no-man-pages --output /jre
FROM gcr.io/distroless/base-debian12
COPY --from=build /jre /jre
COPY app.jar /app.jar
ENTRYPOINT ["/jre/bin/java","-jar","/app.jar"]