springboot3.3.4之后dockerfile分阶段构建的变化

before

在springboot3.3.4之前,我们如果想实现docker镜像的分阶段构建,一般dockerfile是这样子写的

FROM openjdk:17-jdk as builder
# 执行工作目录
WORKDIR application
# 配置参数
ARG JAR_FILE=target/app.jar
# 将编译构建得到的jar文件复制到镜像空间中
COPY ${JAR_FILE} application.jar
# 通过工具spring-boot-jarmode-layertools从application.jar中提取拆分后的构建结果
RUN java -Djarmode=layertools -jar application.jar extract

# 正式构建镜像
FROM openjdk:17-jdk
# 安装less命令
#RUN apt-get update && \
#    apt-get install -y less && \
#    apt-get clean
WORKDIR application
# 前一阶段从jar中提取除了多个文件,这里分别执行COPY命令复制到镜像空间中,每次COPY都是一个layer
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.PropertiesLauncher"]

now

但是在3.3.4版本之后,PropertiesLauncher 或者JarLauncher 这两个类位置调整了,又往下延伸了一层,新的改为org.springframework.boot.loader.launch.PropertiesLauncher

5 个赞

佬,分层构建是啥意思

说错了,应该是叫分阶段构建

截图发噢佬。

啥意思??????

不用 jib 吗

aigc内容需截图

12 个赞

论坛规则是aigc内容必须截图


补充Dockerfile分阶段构建说明

这个啥意思?先把fatjar拆解成tinyjar ?
docker layer只包含新的tiny部分?

就为了省那一点点构建时间和容量吗?

构建会提速,在部署拉取镜像的时候,也会提速塞

感谢分享~~