洞察纵观鸿蒙next版本,如何凭借FinClip加强小程序的跨平台管理,确保企业在数字化转型中的高效运营和数据安全?
787
2022-09-10
docker multi-stage 多阶段构建
多阶段构建
一、需求二、普通构建
1、编写Dockerfile2、构建镜像
三、多阶段(multi-stage)构建
1、编写Dockerfile2、构建镜像
四、比较2个镜像的体积大小
我们在构建自己的
docker镜像时,总是希望自己构建的镜像尽可能的小,那么我们可以使用
docker 的
multi-stage(多阶段)来构建镜像。
下文,我们来演示一个例子,比较一下普通构建镜像和多阶段构建镜像的镜像大小。
注意:
multi-stage需要docker 17.05 或更高的版本上才可以使用。参考的官方文档multi-stage
一、需求
我们使用git来-一个maven项目,然后构建成一个镜像,比较一下普通构建和使用multi-stage构建的镜像的体积大小。
二、普通构建
1、编写Dockerfile
Dockerfile文件的名字为 Dockerfile-old
FROM maven:3.6.2-jdk-11-slimRUN apt-get update \ && apt-get install -y git \ && git clone \ && cd quartz-manager \ && mvn clean packageEXPOSE 9090ENTRYPOINT ["java","-jar","/quartz-manager/target/quartz-manager-0.0.1-SNAPSHOT.jar"]
2、构建镜像
docker build -t quartz-manager-old -f Dockerfile-old .
三、多阶段(multi-stage)构建
1、编写Dockerfile
Dockerfile文件的名字为 Dockerfile-multi-stage
FROM maven:3.6.2-jdk-11-slim AS buildRUN apt-get update \ && apt-get install -y git \ && git clone \ && cd quartz-manager \ && mvn clean packageFROM openjdk:11.0.5-jre-slim-busterCOPY --from=build /quartz-manager/target/quartz-manager-0.0.1-SNAPSHOT.jar .EXPOSE 9090ENTRYPOINT ["java","-jar","./quartz-manager-0.0.1-SNAPSHOT.jar"]
注意:
多阶段构建是写在一个Dockerfile文件中的,可以看出里面有2个FROM等FROM maven:3.6.2-jdk-11-slimAS build 后方的 这个build 表示为我们的构建阶段取一个名字COPY --from=build 中的--from=build 表示从build这个阶段中拷贝内容。
2、构建镜像
docker build -t quartz-manager-multi-stage -f Dockerfile-multi-stage .
四、比较2个镜像的体积大小
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~