名称 | 链接 | 备注 |
---|---|---|
项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
# 指定基础镜像,这是分阶段构建的前期阶段 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
dockerhistory dockerlayerdemo:0.0.1
至此,SpringBoot-2.3.0.RELEASE官方推荐的镜像构建方式就实践完成了,但是也留下了一些疑问:
这些问题留待下一篇文章一起深入研究。
官方文档地址:
https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/pdf/spring-boot-reference.pdf ,4.31章节