精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

擼一擼,Spring Boot 構建Docker鏡像!

開源
隨著越來越多的組織轉向容器和虛擬服務器,Docker正成為軟件開發工作流程中一個更重要的部分。為此,Spring Boot 2.3中最新的功能之中,提供了為Spring Boot應用程序創建 Docker 鏡像的能力。

[[351755]]

隨著越來越多的組織轉向容器和虛擬服務器,Docker正成為軟件開發工作流程中一個更重要的部分。為此,Spring Boot 2.3中最新的功能之中,提供了為Spring Boot應用程序創建 Docker 鏡像的能力。

這篇文章的目的,就是為了給大家介紹如何為 Spring Boot 應用程序創建 Docker 鏡像。

1. 傳統Docker構建

使用Spring Boot 構建 Docker 鏡像的傳統方法是使用 Dockerfile 。下面是一個簡單的例子:

  1. FROM openjdk:8-jdk-alpine 
  2. EXPOSE 8080 
  3. ARG JAR_FILE=target/demo-app-1.0.0.jar 
  4. ADD ${JAR_FILE} app.jar 
  5. ENTRYPOINT ["java","-jar","/app.jar"

然后我們可以使用 docker build 命令來創建 Docker 映像。這對大多數應用程序都很好,但也有一些缺點。

首先,我們使用的是 Spring Boot 創建的 fat jar。這會影響啟動時間,尤其是在集裝箱環境中。我們可以通過添加jar文件的分解內容來節省啟動時間。

其次,Docker鏡像是分層構建的。Spring Boot fat jar 的特性使得所有的應用程序代碼和第三方庫都放在一個層中。這意味著即使只有一行代碼更改,也必須重新構建整個層。

通過在構建之前分解 jar ,應用程序代碼和第三方庫各自獲得自己的層。這樣,我們便可以利用Docker的緩存機制。現在,當某一行代碼被更改時,只需要重新構建相應的層。

考慮到這一點,讓我們看看Spring Boot 如何改進創建Docker鏡像的過程。

2. Buildpacks

BuildPacks 是一種提供框架和應用程序依賴性的工具。

例如,給定一個Spring Boot fat jar,一個buildpack將為我們提供Java運行時。這使我們可以跳過 Dockerfile 并自動獲得一個合理的docker 鏡像。

Spring Boot 包括對 bulidpacks 的Maven和Gradle支持。例如,使用Maven構建時,我們將運行以下命令:

  1. ./mvnw spring-boot:build-image 

我們觀察下一些相關的輸出,看看發生了什么:

  1. [INFO] Building jar: target/demo-0.0.1-SNAPSHOT.jar 
  2. ... 
  3. [INFO] Building image 'docker.io/library/demo:0.0.1-SNAPSHOT' 
  4. ... 
  5. [INFO]  > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base-platform-api-0.3' 100% 
  6. ... 
  7. [INFO]     [creator]     ===> DETECTING 
  8. [INFO]     [creator]     5 of 15 buildpacks participating 
  9. [INFO]     [creator]     paketo-buildpacks/bellsoft-liberica 2.8.1 
  10. [INFO]     [creator]     paketo-buildpacks/executable-jar    1.2.8 
  11. [INFO]     [creator]     paketo-buildpacks/apache-tomcat     1.3.1 
  12. [INFO]     [creator]     paketo-buildpacks/dist-zip          1.3.6 
  13. [INFO]     [creator]     paketo-buildpacks/spring-boot       1.9.1 
  14. ... 
  15. [INFO] Successfully built image 'docker.io/library/demo:0.0.1-SNAPSHOT' 
  16. [INFO] Total time:  44.796 s 

第一行顯示我們構建了標準的 fat jar,與其他典型的maven包一樣。

下一行開始Docker映像構建。然后,看到這個 bulid 拉取了 packeto 構建器。

packeto 是基于云原生 bulidpacks 的實現。它負責分析我們的項目并確定所需的框架和庫。在我們的例子中,它確定我們有一個Spring Boot項目并添加所需的構建包。

最后,我們看到生成的Docker映像和總構建時間。注意,在第一次構建時,花了相當多的時間下載構建包并創建不同的層。

buildpacks 的一大特點是Docker映像是多層的。因此,如果我們只更改應用程序代碼,后續構建將更快:

  1. ... 
  2. [INFO]     [creator]     Reusing layer 'paketo-buildpacks/executable-jar:class-path' 
  3. [INFO]     [creator]     Reusing layer 'paketo-buildpacks/spring-boot:web-application-type' 
  4. ... 
  5. [INFO] Successfully built image 'docker.io/library/demo:0.0.1-SNAPSHOT' 
  6. ... 
  7. [INFO] Total time:  10.591 s 

3. 層級jar包

在某些情況下,我們可能不喜歡使用 bulidpacks ——也許我們的基礎架構已經綁定到另一個工具上,或者我們已經有了我們想要重新使用的自定義 Dockerfiles 。

基于這些原因,Spring Boot 還支持使用分層jars 構建Docker映像。為了了解它的工作原理,讓我們看看一個典型的Spring Boot fat jar 布局:

  1. org/ 
  2.   springframework/ 
  3.     boot/ 
  4.   loader/ 
  5. ... 
  6. BOOT-INF/ 
  7.   classes/ 
  8. ... 
  9. lib/ 
  10. ... 

fat jar 由3個主要區域組成:

  • 啟動Spring應用程序所需的引導類
  • 應用程序代碼
  • 第三方庫

使用分層jar,結構看起來很相似,但是我們得到了一個新的 layers.idx 將 fat jar 中的每個目錄映射到一個層的文件:

  1. "dependencies"
  2.   - "BOOT-INF/lib/" 
  3. "spring-boot-loader"
  4.   - "org/" 
  5. "snapshot-dependencies"
  6. "application"
  7.   - "BOOT-INF/classes/" 
  8.   - "BOOT-INF/classpath.idx" 
  9.   - "BOOT-INF/layers.idx" 
  10.   - "META-INF/" 

Out-of-the-box, Spring Boot provides four layers:

開箱即用,Spring Boot 提供4層:

  • dependencies: 來自第三方的依賴
  • snapshot-dependencies: 來自第三方的 snapshot 依賴
  • resources: 靜態資源
  • application: 應用程序代碼和資源(resources)

我們的目標是將應用程序代碼和第三方庫放置到層中,以反映它們更改的頻率。

例如,應用程序代碼可能是更改最頻繁的代碼,因此它有自己的層。此外,每一層都可以獨立演化,只有當一層發生變化時,才會為它重建 Docker 鏡像。

現在我們了解了分層 jar 結構,接下來看看如何利用它來制作 Docker 映像。

3.1.創建分層 jar

首先,我們必須建立一個項目來創建一個分層的jar。對于Maven,則需要在POM的 Spring Boot plugin 部分添加一個新的配置:

  1. <plugin> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-maven-plugin</artifactId> 
  4.     <configuration> 
  5.         <layers> 
  6.             <enabled>true</enabled> 
  7.         </layers> 
  8.     </configuration> 
  9. </plugin> 

有了這個配置,Maven package 命令(包括它的其他依賴命令)將使用前面提到的四個默認層生成一個新的分層jar。

3.2. 查看和提取分層

下一步,我們需要從 jar 中提取層,這樣Docker鏡像才能擁有正確的層。要檢查分層jar的任何層,可以運行以下命令:

  1. java -Djarmode=layertools -jar demo-0.0.1.jar list 

然后提取它們,運行命令:

  1. java -Djarmode=layertools -jar demo-0.0.1.jar extract 

3.3. 創建Docker映像

將這些層合并到 Docker 映像中的最簡單方法是使用 Dockerfile :

  1. FROM adoptopenjdk:11-jre-hotspot as builder 
  2. ARG JAR_FILE=target/*.jar 
  3. COPY ${JAR_FILE} application.jar 
  4. RUN java -Djarmode=layertools -jar application.jar extract 
  5.   
  6. FROM adoptopenjdk:11-jre-hotspot 
  7. COPY --from=builder dependencies/ ./ 
  8. COPY --from=builder snapshot-dependencies/ ./ 
  9. COPY --from=builder spring-boot-loader/ ./ 
  10. COPY --from=builder application/ ./ 
  11. ENTRYPOINT ["java""org.springframework.boot.loader.JarLauncher"

這個 Dockerfile 從fat jar中提取層,然后將每個層復制到Docker映像中。

每個COPY指令最終都會在Docker映像中生成一個新層。

如果我們構建這個Dockerfile,我們可以看到分層jar中的每個層都作為自己的層添加到Docker鏡像中:

  1. ... 
  2. Step 6/10 : COPY --from=builder dependencies/ ./ 
  3.  ---> 2c631b8f9993 
  4. Step 7/10 : COPY --from=builder snapshot-dependencies/ ./ 
  5.  ---> 26e8ceb86b7d 
  6. Step 8/10 : COPY --from=builder spring-boot-loader/ ./ 
  7.  ---> 6dd9eaddad7f 
  8. Step 9/10 : COPY --from=builder application/ ./ 
  9.  ---> dc80cc00a655 
  10. ... 

在本文中,我們學習了使用 Spring Boot 構建 Docker 映像的各種方法。

使用 buildpacks,我們可以獲得合適的Docker鏡像,而無需模板或自定義配置。

或者,再多花點功夫,我們就可以使用分層 jar 來獲得一個更加定制的Docker鏡像。

本文轉載自微信公眾號「鍋外的大佬」,可以通過以下二維碼關注。轉載本文請聯系鍋外的大佬公眾號。

 

責任編輯:武曉燕 來源: 鍋外的大佬
相關推薦

2020-03-27 11:41:12

線程 Java中止

2018-04-12 17:00:07

云計算燒烤SaaS

2021-02-03 09:04:11

解密Spring配置

2023-01-10 19:47:47

Redis原理多線程

2017-02-20 13:54:04

戴爾

2015-06-12 10:01:25

程序員代碼

2025-11-12 07:50:52

SpringBoot登錄框OAuth2

2017-07-14 14:12:10

AndroidRecyclerVie

2020-11-04 07:56:19

工具Linux 翻譯

2022-10-10 08:00:00

微服務Spring Boo容器

2021-06-07 12:08:06

iOS Python API

2020-08-03 08:10:52

UDPTCP通信

2021-12-12 18:18:15

代碼元宇宙Python

2021-05-14 13:30:17

Mybatis分表插件

2024-02-19 00:00:00

Redis分布式

2021-11-02 22:35:46

配置DubboLoadbalance

2020-09-10 06:58:34

C語言DBProxy

2021-10-27 06:49:34

線程池Core函數

2021-11-02 14:19:15

插件MavengroupId

2022-03-01 11:38:51

RPC框架后端
點贊
收藏

51CTO技術棧公眾號

中文字幕在线不卡| 日韩亚洲精品在线| 911精品产国品一二三产区| 亚洲国产日韩欧美| 好吊色在线视频| 日韩精品网站| 欧美丰满美乳xxx高潮www| 国产经典久久久| 内射后入在线观看一区| 久久久久久一区二区| 色婷婷**av毛片一区| 午夜免费一级片| 国产三线在线| 国产亚洲精品中文字幕| 91日本视频在线| 永久免费看片在线播放| 不卡日本视频| 精品1区2区在线观看| 99久久激情视频| 黄av在线播放| 92国产精品观看| 2019亚洲男人天堂| 久久嫩草捆绑紧缚| 鲁大师精品99久久久| 欧美片网站yy| 狠狠干 狠狠操| 天堂中文а√在线| 99热这里都是精品| 国产自摸综合网| 国产a∨精品一区二区三区仙踪林| 精品香蕉视频| 亚洲精品一区二区三区蜜桃下载 | 日韩一区二区三区国产| 91精产国品一二三| 影音成人av| 亚洲大尺度视频在线观看| 日本一区高清不卡| 秋霞av鲁丝片一区二区| 六月丁香综合在线视频| 97在线观看视频国产| 神马久久精品综合| 久久99高清| 精品久久久久久无| 国产精品久久久久久久99| ririsao久久精品一区| 国产精品久久久一本精品| 精品国产乱码久久久久软件| 国产口爆吞精一区二区| 丝袜亚洲另类欧美| 91国产高清在线| 久久久久久久国产精品毛片| 国产高清一区| 一区二区三区视频免费| av直播在线观看| 好吊妞国产欧美日韩免费观看网站| 日韩欧美精品中文字幕| 黄色影视在线观看| 91精彩视频在线观看| 91麻豆国产在线观看| 操人视频欧美| 国产福利免费视频| 国产一区不卡在线| 成人午夜一级二级三级| 亚洲天堂自拍偷拍| 久久精品二区亚洲w码| 国产91在线视频| www.日韩一区| 玖玖视频精品| 欧美在线免费看| 日韩av大片在线观看| 91久久综合| 久久久亚洲国产| 国产无遮无挡120秒| 欧美涩涩视频| 国产69精品久久久久9| 久久精品亚洲无码| 影音先锋亚洲电影| 91国产在线精品| 亚洲高清毛片一区二区| 亚洲影视在线| 欧美激情性做爰免费视频| 九九热这里有精品视频| 亚洲小说区图片区| 91精品国产精品| 亚洲日本视频在线观看| 亚洲影音先锋| 国产精品一二区| 国产免费不卡av| 懂色av中文一区二区三区| 国产精品久久久久久久久婷婷| 黄色av一区二区三区| 盗摄精品av一区二区三区| 精品在线不卡| 日本护士...精品国| 国产精品系列在线| 欧美一级黄色录像片| 日本孕妇大胆孕交无码| 五月婷婷另类国产| www日韩在线观看| 一级欧美视频| 精品福利二区三区| 欧美多人猛交狂配| 国产高清欧美| 91国产一区在线| 一级黄色大片免费| 久久精品国产亚洲aⅴ| 99精彩视频| 欧洲亚洲精品视频| 亚洲天堂精品视频| 国产黄色一级网站| 8av国产精品爽爽ⅴa在线观看| 在线观看91精品国产麻豆| 日本少妇xxxx| 日韩片欧美片| 97视频在线观看免费高清完整版在线观看| 日本在线视频免费观看| 丝瓜av网站精品一区二区| 91丝袜美腿美女视频网站| 色欲久久久天天天综合网| 日本一区二区在线不卡| 成人在线播放网址| 经典三级一区二区| 日韩精品一区二区三区视频在线观看 | 狠狠做深爱婷婷综合一区| 欧美成人三级视频网站| 亚洲天堂一区在线| 美女视频黄久久| 国产中文一区二区| 黄色网址在线免费| 日本久久电影网| 粗大的内捧猛烈进出视频| 成人情趣视频网站| 91精品国产色综合| 精品免费久久久| 久久精品亚洲乱码伦伦中文| 91黄色在线看| 国产精品视频一区二区三区| 日韩精品在线观| 青青草原免费观看| 久久99久久精品欧美| 明星裸体视频一区二区| 七七久久电影网| 337p亚洲精品色噜噜噜| 91激情视频在线观看| 夜夜嗨一区二区三区| 91丨九色丨国产| 久久国产精品高清一区二区三区| 亚洲夂夂婷婷色拍ww47| 国产日韩欧美久久| 欧美午夜精品一区二区三区电影| 97视频在线观看成人| 亚洲国产剧情在线观看| 亚洲桃色在线一区| 91丨九色丨蝌蚪| 日韩欧美网站| 国产欧美在线看| www在线播放| 精品高清美女精品国产区| 中文字幕第六页| 99久久这里只有精品| 国产日韩欧美视频在线| 国产最新视频在线| 91福利区一区二区三区| 少妇真人直播免费视频| 亚洲精品欧美| av一区二区三区四区电影| 最新黄网在线观看| 日韩视频免费观看高清完整版在线观看| 貂蝉被到爽流白浆在线观看| 免费在线观看成人| 台湾成人av| 久久天天久久| zzijzzij亚洲日本成熟少妇| 少妇高潮av久久久久久| 成人高清视频在线观看| 国产美女在线一区| 任你躁在线精品免费| 57pao成人国产永久免费| 艳母动漫在线看| 日韩欧美亚洲范冰冰与中字| 日韩乱码人妻无码中文字幕久久 | 波多野结衣综合网| 欧美一区自拍| 国产成人精品免费视频| 日韩子在线观看| 日韩视频在线永久播放| 久久精品久久国产| 久久麻豆一区二区| 亚洲污视频在线观看| 成人网18免费网站| 国产精品久久久久久久久免费| 在线观看av的网站| 日韩一区二区免费在线电影| 国产乡下妇女做爰视频| 久久一日本道色综合| 成人性生交免费看| 午夜久久tv| 久久99精品久久久久久青青日本 | 99视频精品在线| 熟女人妇 成熟妇女系列视频| 欧美mv日韩| 91丨九色丨国产在线| 在线观看中文| 亚洲精品视频免费在线观看| 亚洲网站在线免费观看| 亚洲一区二区视频在线观看| 日韩av一二区| 极品少妇一区二区| 欧美不卡在线播放| 日韩成人激情| 精品视频一区二区三区四区| 国产精品第一| 韩日精品中文字幕| avav免费在线观看| 精品美女在线播放| 久久精品视频2| 亚洲国产一二三| 一级黄色片网址| 激情国产一区二区| 欧美精品一区免费| 久久久久久久久久久9不雅视频| 99在线观看| 91福利精品在线观看| 国语自产精品视频在线看| 1024视频在线| 亚洲精品99999| 国产草草影院ccyycom| 欧日韩精品视频| 91久久国产视频| 亚洲人成网站在线| 男人的天堂官网| av不卡一区二区三区| 午夜av中文字幕| 久久一二三四| 日韩国产欧美亚洲| 日韩欧美视频在线播放| 欧美成ee人免费视频| 中文字幕一区二区三区四区久久| 国产精品亚洲美女av网站| 亚洲欧美一区二区三区| 欧美精品久久久久久久久| 免费av网站在线看| 国产丝袜一区二区| 人妻无码中文字幕免费视频蜜桃| 91成人免费在线| 国产欧美日韩另类| 亚洲色图.com| 国产视频不卡在线| 2020国产精品久久精品美国| 欧美人与性动交α欧美精品| 精品一区二区三区在线观看国产| 国产av人人夜夜澡人人爽| 国产欧美二区| 久久艹国产精品| 激情欧美亚洲| 丁香色欲久久久久久综合网| 香蕉视频官网在线观看日本一区二区| 日本一区高清不卡| 国产一区二区三区四区二区| 免费在线观看一区二区| 久久久久97| 国内精品二区| 欧美变态网站| 久久久一本精品99久久精品| 日韩激情毛片| 免费一区二区三区在在线视频| 日韩影视在线观看| 久久精品99| 福利在线一区| 久久久久se| 欧美精选一区二区三区| 日韩一区二区三区资源| 国产精品亚洲人成在99www| 欧美日韩精品免费看| 色综合综合色| 亚洲欧美日本国产有色| 精品国产一区二区三区四区 | 欧美丝袜在线观看| 国模一区二区三区白浆| 97人人模人人爽人人澡| 国产成人免费视频精品含羞草妖精| 色哟哟免费视频| 成人福利电影精品一区二区在线观看 | wwwww黄色| 亚洲丝袜美腿综合| 欧美成人三级视频| 午夜视频在线观看一区二区| 日韩精品一区不卡| 欧美性大战久久久久久久蜜臀 | 免费在线观看污网站| 国产一区二区电影| 老熟妇精品一区二区三区| 91原创在线视频| 国产黄色大片免费看| 亚洲免费在线看| 日本三级中文字幕| 欧美伊人精品成人久久综合97| 无码人妻丰满熟妇区五十路| 欧美另类高清zo欧美| 欧美一区二区公司| 亚洲午夜久久久久久久| 国产网友自拍视频导航网站在线观看 | 国产精品 欧美在线| 亚洲综合伊人| 精品在线观看一区二区| 欧美成人milf| 中国丰满熟妇xxxx性| 天堂久久久久va久久久久| 日韩精品aaa| 久久综合色之久久综合| 91视频最新网址| 午夜精品福利一区二区蜜股av| 一级一片免费看| 欧美电影精品一区二区| 国产色在线 com| 久久久国产视频| 这里有精品可以观看| 亚洲www永久成人夜色| 亚洲最大在线| 女女百合国产免费网站| 伊人狠狠色j香婷婷综合| 国产免费又粗又猛又爽| av资源站一区| 国产一区二区视频在线观看免费| 一本到一区二区三区| av观看在线免费| 宅男66日本亚洲欧美视频| 三级中文字幕在线观看| 99re在线播放| 色综合久久网| 杨幂毛片午夜性生毛片 | 免费在线观看日韩欧美| 菠萝菠萝蜜网站| 亚洲福利一二三区| 精品国产av鲁一鲁一区| 俺去了亚洲欧美日韩| 国产精品4hu.www| 亚洲欧洲精品一区二区三区波多野1战4 | 久久一夜天堂av一区二区三区| 国产香蕉视频在线| 亚洲激情视频在线| 成人黄色动漫| 久久精品成人一区二区三区蜜臀| 国产日本精品| 国产精品扒开腿做爽爽| 色婷婷综合激情| 大乳在线免费观看| 国产精品美女在线观看| 日韩不卡一区| 国产资源中文字幕| 亚洲精品久久久蜜桃| 国产成人精品毛片| 欧美黑人xxx| 牛牛影视久久网| 成人小视频在线看| 久久婷婷综合激情| 国产免费a视频| 日韩亚洲精品电影| 玖玖精品一区| 免费不卡av在线| 久久综合久久综合久久| 国产精品sm调教免费专区| 最近2019中文免费高清视频观看www99 | 97超级碰碰| 在线日韩av| xxx在线播放| 777色狠狠一区二区三区| 欧洲一区二区三区| 欧美人xxxxx| 看国产成人h片视频| 唐朝av高清盛宴| 亚洲精品电影在线观看| 成人黄色视屏网站| 亚洲高潮无码久久| 97se亚洲国产综合自在线观| 日韩一级片中文字幕| 精品国产一区二区三区久久狼黑人| 久久国产精品美女| 亚洲中文字幕无码专区| 日本一区二区成人在线| 国产99久久九九精品无码免费| 97视频在线观看视频免费视频 | 日韩精品久久久久久久软件91| 五十路熟女丰满大屁股| 中文字幕高清一区| 亚洲成熟女性毛茸茸| 欧美最猛性xxxxx免费| 国产精品国产三级国产在线观看| 秘密基地免费观看完整版中文 | 亚洲综合精品自拍| 免费在线视频你懂得| 亚洲专区在线视频| 久久人人精品| 久草视频免费播放| 中文字幕一区日韩电影| 精品国产导航| 亚洲第一色av| 色综合激情久久| 在线观看wwwxxxx| 婷婷五月色综合|