如果您使用了SpringBoot-2.3.0,可以按照官方推荐的方案来制作Docker镜像,接下来通过实战学习SpringBoot官方推荐的镜像制作方案; 本次实战用的是普通的SpringBoot工程,如果您不想写代码,整个系列的源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos): 这个git项目中有多个文件夹,本章的应用在dockerlayerdemo文件夹下,如下图红框所示: 至此,SpringBoot-2.3.0.RELEASE官方推荐的镜像构建方式就实践完成了,但是也留下了一些疑问: 这些问题留待下一篇文章一起深入研究。 官方文档地址:https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/pdf/spring-boot-reference.pdf ,4.31章节demo源码
版本信息
构建镜像实战
# 指定基础镜像,这是分阶段构建的前期阶段
FROM openjdk:8u212-jdk-stretch as builder
# 执行工作目录
WORKDIR application
# 配置参数
ARG JAR_FILE=target/*.jar
# 将编译构建得到的jar文件复制到镜像空间中
COPY ${JAR_FILE} application.jar
# 通过工具spring-boot-jarmode-layertools从application.jar中提取拆分后的构建结果
RUN java -Djarmode=layertools -jar application.jar extract
# 正式构建镜像
FROM openjdk:8u212-jdk-stretch
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.JarLauncher"]
mvn clean package -U -DskipTests
docker build -t dockerlayerdemo:0.0.1 .
验证
docker run --rm -p 8080:8080 dockerlayerdemo:0.0.1
docker history dockerlayerdemo:0.0.1
参考信息
欢迎关注我的公众号:程序员欣宸