日期更新说明2025年11月8日初版发布前言
Spring Boot4预计年底 11 月份发布,目前截止文章发布已经发布到了4.0.0 RC2版本;本文作为Spring Boo4专题学习预览篇,带你一起聊聊 Spring Boot4打包Docker镜像相关内容。
前置准备
- 需要搭建或者准备好 Spring Boot 项目,手动推荐搭建:https://start.spring.io/
笔者的 Spring Boot 项目 Github 链接:https://github.com/will-we/blog/tree/main/java/springboot4-samples
传统 Docker 构建
- ARG RUNTIME_IMAGE=amazoncorretto:17.0.7-alpine
- FROM ${RUNTIME_IMAGE} AS runtime
- # 拷贝打包后的可执行 JAR
- COPY ./springboot4-samples-0.0.1.jar /app/app.jar
- WORKDIR /app
- # Spring Boot 默认端口
- EXPOSE 8080
- # 可通过环境变量调整运行参数/激活配置文件
- ENV SPRING_PROFILES_ACTIVE=default \
- JAVA_TOOL_OPTIONS=""
- # 直接运行可执行 JAR
- ENTRYPOINT ["java","-jar","/app/app.jar"]
复制代码- docker build -t springboot4-samples:latest .
复制代码 如下图:
- docker run -p 8080:8080 springboot4-samples
复制代码 日志如下:
SpringBoot插件构建
- mvn spring-boot:build-image
复制代码 构建日志如下:查看下本地镜像

构建对比分析
SpringBoot 插件构建
实际上发生的事情:
- 先执行 package 阶段,生成一个可执行的 fat jar。
- 调用 Cloud Native Buildpacks(CNB)
- Spring Boot Plugin 内部调用 Paketo Buildpacks(官方推荐)。
- 使用 CNB 的 Lifecycle 阶段:detect → analyze → build → export。
- 输出一个可直接运行的 Docker 镜像(通常是 docker.io/library/:)。
- 若配置了 publish=true,则自动推送到远程镜像仓库。
阶段分析
阶段作用Detect检测是否有合适的 buildpack 来构建该项目(Spring Boot → Java buildpack)Analyze分析缓存、上一次构建产物Build运行 buildpacks 构建层(JDK层、依赖层、应用层)Export导出成最终 OCI 镜像(可直接 docker run)对比项BuildpacksDockerfile构建语言声明式、自动检测命令式、需人工编写优化自动层缓存、分层优化手动优化层安全性由社区维护的基础镜像需要自己维护适合场景Spring Boot / Cloud Native 架构需要复杂构建逻辑的项目Docker 镜像推送
推送阿里云镜像仓库
- docker tag springboot4-samples:0.0.1 registry.cn-hangzhou.aliyuncs.com/weirson/springboot4-samples:0.0.1
- docker push registry.cn-hangzhou.aliyuncs.com/weirson/springboot4-samples:0.0.1
复制代码 推送 Docker 镜像仓库
- docker tag springboot4-samples:0.0.1 weirson/springboot4-samples:0.0.1
- docker push weirson/springboot4-samples:0.0.1
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |