99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

SpringBoot(2.3)應用制作Docker鏡像的過程

這期內容當中小編將會給大家帶來有關SpringBoot(2.3)應用制作Docker鏡像的過程,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創新互聯專注于坡頭網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供坡頭營銷型網站建設,坡頭網站制作、坡頭網頁設計、坡頭網站官網定制、小程序設計服務,打造坡頭網絡公司原創品牌,更為您提供坡頭網站排名全網營銷落地服務。

關鍵知識點:鏡像layer

老版本SpringBoot的官方方案

以<font color="blue">SpringBoot-2.2.0.RELEASE</font>版本為例,官方文檔( https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/pdf/spring-boot-reference.pdf)給出的做法如下:

  1. 將SpringBoot工程編譯構建,在target目錄得到jar;

  2. 在target目錄新建dependency文件夾;

  3. 將jar解壓到dependency文件夾;

  4. 編寫Dockerfile文件,內容如下:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.example.MyApplication"]
  1. 可見,官方推薦的做法是將整個jar文件解壓,在Dockerfile中多次用COPY命令分別復制,這樣做的好處顯而易見:多個layer,如果鏡像的新版本中只修改了應用代碼,那么下載鏡像時只會下載/app這個layer,其他部分直接使用本地緩存,這是docker鏡像的常規優化手段;

  2. 上述方案有個小問題:<font color="red">麻煩?。?!</font>

  3. 于是2.3.0.RELEASE版本做了些優化,讓事情變得簡單些;

2.3.0.RELEASE版本方案和舊版的區別

2.3.0.RELEASE版本構建Docker的步驟如下:

  1. pom.xml中的spring-boot-maven-plugin插件增加一個配置項; 2.編譯構建生成jar;

  2. 編寫Dockerfile,里面用到了多階段構建(multi-stage builds),用工具從jar中提取拆分后,再多次執行COPY命令將拆分后的內容放入鏡像,達到多個layer的目的;

因此,2.3.0.RELEASE版本和舊版本相比有如下變化:

  1. <font color="blue">pom.xml</font>中多了個參數;

  2. 構建好jar后,無需自己解壓jar;

  3. Dockefile內容不一樣,舊版是手動解壓jar,再在Dockerfile分別復制,2.3.0.RELEASE是通過<font color="red">java命令從jar中提取出各部分內容</font>;

搞清楚了新舊版本的區別,咱們繼續研究下一個問題吧;

pom.xml中spring-boot-maven-plugin插件新增的參數

  1. pring-boot-maven-plugin插件新增參數如下圖所示:

SpringBoot(2.3)應用制作Docker鏡像的過程 2. 上述參數有啥用?我這邊編譯構建了兩次jar,第一次有上述參數,第二次沒有,將兩次生成的jar解壓后對比,發現用了上述參數后,生成的jar會多出下圖紅框中的兩個文件:

SpringBoot(2.3)應用制作Docker鏡像的過程

  1. 看看<font color="blue">layers.idx</font>文件的內容,如下圖:

SpringBoot(2.3)應用制作Docker鏡像的過程

  1. 上圖中的內容分別是什么意思呢?官方已給出了詳細解釋,如下圖紅框:

SpringBoot(2.3)應用制作Docker鏡像的過程

  1. 綜上所述,layers.idx文件是個清單,里面記錄了所有要被復制到鏡像中的信息,接下來看看如何使用layers.idx文件,這就涉及到jar包中新增的另一個文件:<font color="blue">spring-boot-jarmode-layertools-2.3.0.RELEASE.jar</font>

spring-boot-jarmode-layertools工具

  1. 前面已經介紹過jar中除了layers.idx,還多了個文件:<font color="blue">spring-boot-jarmode-layertools-2.3.0.RELEASE.jar</font> ,來看看這個文件的用處;

  2. 進入工程的<font color="blue">target</font>目錄,這里面是編譯后的jar文件(我這里文件名為dockerlayerdemo-0.0.1-SNAPSHOT.jar),注意此時的<font color="blue">spring-boot-maven-plugin</font>插件是帶上了下圖紅框中的參數的:

SpringBoot(2.3)應用制作Docker鏡像的過程

  1. 執行以下命令:

java -Djarmode=layertools -jar dockerlayerdemo-0.0.1-SNAPSHOT.jar list
  1. 得到結果如下圖所示,是layers.idx文件的內容:

SpringBoot(2.3)應用制作Docker鏡像的過程

  1. 來看看官方對這個<font color="blue">layertools</font>的解釋,list參數的作用上面我們已經體驗過了,重點是紅框中的<font color="red">extract</font>參數,它的作用是從jar中提取構建鏡像所需的內容:

SpringBoot(2.3)應用制作Docker鏡像的過程

  1. 看到這里,您是否想到了《體驗SpringBoot(2.3)應用制作Docker鏡像(官方方案)》中Dockerfile的內容,請看下圖的紅框和紅字,是否有種恍然大悟的感覺:jar構建生成清單layers.idx,Dockerfile中根據清單從jar提取文件放入鏡像:

SpringBoot(2.3)應用制作Docker鏡像的過程

至此,三個問題都已經找到了答案,小結一下:

SpringBoot-2.3.0.RELEASE推薦的鏡像構建方案和舊版本相比有什么不同

  1. pom.xml中的spring-boot-maven-plugin插件增加一個配置項;

  2. 構建好jar后,舊版本要自己解壓jar,新版不需要;

  3. 新版本的jar中,多了個文件清單<font color="blue">layers.idx</font>和鏡像文件處理工具<font color="blue">spring-boot-jarmode-layertools-2.3.0.RELEASE.jar</font>;

  4. 舊版的Dockefile內容:因為前面解壓好了,所有在Dockerfile里直接復制前面解壓的內容,這里就有個風險:前一步解壓和當前復制的文件位置要保證一致;

  5. 新版的Dockerfile內容:使用工具spring-boot-jarmode-layertools-2.3.0.RELEASE.jar,根據的layers.idx內容從jar中提取文件,復制到鏡像中;

  6. 新版的Dockerfile中,由于使用了分階段構建,因此從jar提取文件的操作不會保存到鏡像的layer中;

pom.xml中spring-boot-maven-plugin插件新增的參數,到底做了什么

spring-boot-maven-plugin插件新增的參數,使得編譯構建得到jar中多了兩個文件,如下圖所示:

SpringBoot(2.3)應用制作Docker鏡像的過程

Dockerfile中,java -Djarmode=layertools -jar application.jar extract這個操作啥意思

  1. <font color="blue">java -Djarmode=layertools -jar application.jar extract</font>的作用是從jar中提取文件,這些文件是docker鏡像的一部分;

  2. 上述操作的參數是<font color="blue">extract</font>,另外還有兩個參數,官方解釋它們的作用如下:

SpringBoot(2.3)應用制作Docker鏡像的過程

至此,問題已全部澄清,相信您對SpringBoot-2.3.0.RELEASE官方的鏡像構建方案也足夠了解了,最后是我根據自己的認識畫的流程圖,幫助您快速理解整個構建流程:

SpringBoot(2.3)應用制作Docker鏡像的過程

上述就是小編為大家分享的SpringBoot(2.3)應用制作Docker鏡像的過程了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。

網站名稱:SpringBoot(2.3)應用制作Docker鏡像的過程
文章鏈接:http://www.yijiale78.com/article40/gcejho.html

成都網站建設公司_創新互聯,為您提供建站公司、全網營銷推廣外貿建站、品牌網站建設、用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計