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