多阶段构建Docker镜像
在Docker 17.05及更高的版本中支持支持一種全新的構(gòu)建鏡像模式:多階段構(gòu)建;
多階段構(gòu)建Docker鏡像的最大好處是使構(gòu)建出來(lái)的鏡像變得更小;
目前常見(jiàn)的兩個(gè)構(gòu)建鏡像的方式為:
1、直接使用某基礎(chǔ)鏡像,在此基礎(chǔ)上安裝環(huán)境構(gòu)建應(yīng)用、部署應(yīng)用;
2、構(gòu)建應(yīng)用和部署應(yīng)用為不同鏡像,使用某基礎(chǔ)鏡像構(gòu)建應(yīng)用,然后通過(guò)數(shù)據(jù)卷將應(yīng)用共享給新鏡像;
第一種方式構(gòu)建出來(lái)的鏡像通常都非常大,而且還有許多構(gòu)建應(yīng)用時(shí)生成的飛運(yùn)行應(yīng)用所需要的問(wèn)題,比如Maven就會(huì)生成不少依賴;
第二種方式鏡像稍有減小,做到了構(gòu)建應(yīng)與部署應(yīng)用鏡像的分離但又出現(xiàn)了新的問(wèn)題,原本只需要一個(gè)Dockerfile現(xiàn)在分離后又多出來(lái)一個(gè)Dockerfile文件,管理Dockerfile與數(shù)據(jù)卷也都是麻煩的事情;
多階段構(gòu)建
下面再Dockerfile文件中使用多階段構(gòu)建;
1、該Dockerfile中有兩個(gè)FROM為兩步構(gòu)建,在Maven基礎(chǔ)鏡像中編譯生成Jar、依賴,這階段命名為:BUILD
2、使用linx/alpine-jdk8:0.1作為基礎(chǔ)鏡像,設(shè)置環(huán)境、創(chuàng)建目錄,更重要的是使用COPY --from把BUILD階段生成的項(xiàng)目文件拷貝到鏡像中;
項(xiàng)目目錄:
執(zhí)行:docker build -t demo . 使用該Dockerfile文件構(gòu)建鏡像;
該鏡像生成后:
文章首發(fā)地址:Solinx
http://www.solinx.co/archives/1111
轉(zhuǎn)載于:https://www.cnblogs.com/softlin/p/8138232.html
總結(jié)
以上是生活随笔為你收集整理的多阶段构建Docker镜像的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java-Integer的自动装箱与拆箱
- 下一篇: C语言如何在可变参数函数中使用print