docker multi-stage 多阶段构建

网友投稿 771 2022-09-10

docker multi-stage 多阶段构建

docker multi-stage 多阶段构建

多阶段构建

​​一、需求​​​​二、普通构建​​

​​1、编写Dockerfile​​​​2、构建镜像​​

​​三、多阶段(multi-stage)构建​​

​​1、编写Dockerfile​​​​2、构建镜像​​

​​四、比较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-slim​​AS 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小时内删除侵权内容。

上一篇:生成器以及面向过程编程(编程后怎么生成软件)
下一篇:python基础(26):类的成员(字段、方法、属性)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~