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

怎么把一個Java應用打包成Docker鏡像

開發 后端
怎么把Java應用打包成Docker鏡像?對熟悉Docker的同學這應該是一個很簡單的問題,把項目打包成JAR包然后在Dockerfile里用ADD命令把JAR文件放到鏡像里,啟動命令設置執行這個JAR文件即可。

[[416444]]

本文轉載自微信公眾號「網管叨bi叨」,作者KevinYan11。轉載本文請聯系網管叨bi叨公眾號。

怎么把Java應用打包成Docker鏡像?對熟悉Docker的同學這應該是一個很簡單的問題,把項目打包成JAR包然后在Dockerfile里用ADD命令把JAR文件放到鏡像里,啟動命令設置執行這個JAR文件即可。

比如一個使用Maven構建的Spring應用就可以用下面這個Dockerfile構建鏡像。

  1. FROM openjdk:8-jre 
  2. ADD target/*.jar /application.jar 
  3. ENTRYPOINT ["java""-jar","/application.jar"

上面這個Dockerfile很好理解,使用Maven構建的Java項目的目錄結構統一是

  1. project 
  2. │   pom.xml 
  3. └───src // 源文件目錄 
  4. │   │ 
  5. │   └───main 
  6. │       │    
  7. │       └───java 
  8. │        
  9. └───target // class和jar文件的目錄 

用mvn clean package打包后會把JAR文件生成在target目錄里,通過java -jar命令即可執行編譯好的程序。

所以上面的Dockerfile里就進行了把JAR從target目錄里添加到Docker鏡像中以及將jar -jar /application.jar 設置成容器的啟動命令這兩步操作。

不過除了這種最原始的方法外我們還可以使用Maven的一些插件,或者Docker的多階段打包功能來完成把Java應用打包成Docker鏡像的動作。

Maven插件構建鏡像

Spotify公司的dockerfile-maven-plugin和Google公司出品的jib-maven-plugin是兩款比較有名的插件,下面簡單介紹一下dockerfile-maven-plugin的配置和使用。

其實使用方法很簡單,我們在POM文件里引入這個plugin,并結合上面那個Dockerfile就能讓插件幫助我們完成應用鏡像的打包。

  1. <groupId>com.example</groupId> 
  2.     <artifactId>hello-spring</artifactId> 
  3.     <version>0.0.1-SNAPSHOT</version> 
  4.     <name>helloworld</name
  5. <plugin> 
  6.  <groupId>com.spotify</groupId> 
  7.  <artifactId>dockerfile-maven-plugin</artifactId> 
  8.  <version>1.4.10</version> 
  9.  <executions> 
  10.   <execution> 
  11.   <id>default</id> 
  12.       <goals> 
  13.         <goal>build</goal> 
  14.         <goal>push</goal> 
  15.       </goals> 
  16.     </execution> 
  17.   </executions> 
  18.   <configuration> 
  19.     <repository>${docker.registry.url}/${image.prefix}/${artifactId}</repository> 
  20.     <tag>${project.version}</tag> 
  21.     <buildArgs> 
  22.       <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> 
  23.     </buildArgs> 
  24.   </configuration> 
  25. </plugin> 

 

 

 

插件里使用的docker.registry.url和image.prefix是我單獨為Docker的鏡像倉庫設置的屬性。

  1. <properties> 
  2.  <java.version>1.8</java.version> 
  3.   <image.prefix>kevinyan001</image.prefix> 
  4.   <docker.registry.url></private.registry.url> 
  5. </properties> 

 

這里可以隨意設置成私有倉庫的遠程地址和鏡像前綴,比如在阿里云的鏡像服務上創建一個叫docker-demo的空間,上面的屬性就需要這樣配置:

  1. <properties> 
  2.   <java.version>1.8</java.version> 
  3.   <image.prefix>docker-demo</image.prefix> 
  4.   <docker.registry.url>registry.cn-beijing.aliyuncs.com</docker.registry.url> 
  5. </properties> 

 

在POM文件里配置好插件后伴隨著我們打包應用執行mvc clean package操作時dockerfile-maven-plugin就會自動根據我們的配置打包好一個叫做kevinyan001/hello-spring:0.0.1-SNAPSHOT的Docker鏡像。

dockerfile-maven-plugin除了能幫助我們打包應用鏡像外還可以讓它幫助我們把鏡像push到遠端倉庫,不過我覺得用處不大,感興趣的同學可以去網上搜搜看這部分功能怎么配置。

用Docker的多階段構建打包鏡像

上面介紹了使用Maven插件幫助我們打包Java應用的鏡像,其實我們還可以把mvn clean package這一步也交給Docker來完成。當然把Java應用的源碼放在Docker鏡像里再編譯打包在發布出去肯定是有問題的,我們知道在Dockerfile里每個指令ADD、RUN這些都是在單獨的層上進行,指令越多會造成鏡像越大,而且包含Java項目的源碼也是一種風險。

不過好在后來Docker支持了多階段構建,允許我們在一個Dockerfile里定義多個構建階段,先拉起一個容器完成用于的構建,比如說我們可以在這個階段里完成JAR的打包,然后第二個階段重新使用一個jre鏡像把上階段打包好的JAR文件拷貝到新的鏡像里。

“這一點在Go語言比較有優勢,第一階段編譯好的二進制執行文件直接拷貝到一個最基礎的linux鏡像里就能讓Go的應用在容器里運行。關于Go應用的多階段打包,可以查看我以前的文章線上Go項目的Docker鏡像應該怎么構建? 進行了解。

使用下面的Dockerfile可以通過多階段構建完成Java應用的Docker鏡像打包。

  1. # Dockerfile也可以不放在項目目錄下,通過 -f 指定Dockerfile的位置,比如在項目根下執行以下命令  
  2. docker build -t <some tag> -f <dirPath/Dockerfile> . 
  3.  
  4. FROM kevinyan001/aliyun-mvn:0.0.1 AS MAVEN_BUILD 
  5.  
  6. COPY pom.xml /build/ 
  7. COPY src /build/src 
  8.  
  9. WORKDIR /build/ 
  10. # mount anonymous host directory as .m2 storage for contianer  
  11. VOLUME /root/.m2 
  12.  
  13. RUN mvn clean package -Dmaven.test.skip=true --quiet 
  14.  
  15. FROM openjdk:8-jre 
  16.  
  17.  
  18. COPY --from=MAVEN_BUILD /build/target/*.jar /app/application.jar 
  19.  
  20. ENTRYPOINT ["java""-jar""/app/application.jar"

上面我們用的這些Dockerfile也可以不用放在項目的根目錄里,現在已經支持通過 -f 指定Dockerfile的位置,比如在項目根下執行以下命令完成鏡像的打包。

  1. docker build -t kevinyan001/hello-spring:0.0.1 -f <dirPath/Dockerfile> . 

上面第一個鏡像是我自己做的,因為Maven官方的鏡像的遠程倉庫慢的一批,只能自己包裝一下走阿里云的鏡像源了。試了試速度也不快,主要是隨隨便便一個Spring項目依賴就太多了。大家如果這塊有什么加快Docker 構建速度的方法也可以留言一起討論討論。

 

不可否認用多階段構建打出來的Go鏡像基本上是10M左右,但是Spring的應用隨隨便便就是上百兆,這個對容器的構建速度、網絡傳輸成本是有影響的,那么Spring應用的鏡像怎么瘦身呢,這個就留到以后的文章進行探討了。

 

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2021-06-04 06:20:08

工具Kubernetes集群

2024-11-14 13:19:21

Docker容器開發

2011-07-08 13:44:08

Xcode 打包

2009-06-10 20:44:18

netbeans 打包JAR文件

2020-10-11 20:54:39

Python開發Docker

2011-11-16 13:14:02

Sencha TouciOS本地應用

2020-07-31 10:26:15

Mac OS蘋果Windows

2022-08-29 08:28:58

JS對象數組

2015-01-20 13:46:31

Java EEDockerDocker部署

2014-11-05 11:08:36

阿里云DockerPaas

2014-11-25 14:04:59

DockerDocker Nodeweb應用部署

2022-07-29 07:04:03

Docker鏡像容器

2022-01-11 09:59:23

Python關機程序文件

2014-05-26 09:13:46

DockerPython

2023-12-04 08:28:35

Docker容器

2020-09-28 15:55:32

開源技術 工具

2023-09-14 20:55:52

NodeJSDocker

2018-01-09 20:22:49

容器Docker桌面系統

2015-10-08 09:28:47

JavaDocker鏡像

2021-05-19 17:25:12

Pythonexe命令
點贊
收藏

51CTO技術棧公眾號

www.热久久| 97精品在线播放| 欧美人体一区二区三区| 国产午夜精品久久| 91在线看www| 欧美福利视频一区二区| 菠萝蜜一区二区| 日韩欧美中文字幕精品| 国产在线青青草| 日本成人网址| av亚洲精华国产精华精华| 国产成人福利视频| 免费看的黄色大片| 99热这里只有精品3| 亚洲精品影视| 视频在线观看一区二区| 青青草原成人网| 欧美成人三区| 久久亚洲一区二区三区明星换脸| 国产拍精品一二三| 国产sm调教视频| jizz性欧美23| 欧美人体做爰大胆视频| 五月丁香综合缴情六月小说| 在线观看免费网站黄| av成人动漫在线观看| 91在线直播亚洲| 国产成人免费在线观看视频| 欧美一性一交| 日韩精品一区二区三区在线播放| 午夜免费一区二区| 亚洲一区资源| 婷婷综合五月天| 麻豆一区二区三区在线观看| aiai在线| 久久亚洲捆绑美女| 国产一区二区三区免费不卡| 国产欧美第一页| 免费的成人av| 国产成人精品在线观看| 国产又大又黄又粗| 亚洲作爱视频| 性欧美视频videos6一9| 欧美片一区二区| 我不卡影院28| 日韩在线观看av| 精品一区二区6| 国产色99精品9i| 欧美日韩精品一区二区三区 | 波多野结衣中文字幕久久| 中文字幕中文字幕中文字幕亚洲无线| 欧美成人蜜桃| 久草热在线观看| 日韩av二区在线播放| 国产成人在线视频| 天天干天天操天天操| 外国成人激情视频| xxxxx91麻豆| 欧美做爰啪啪xxxⅹ性| 视频在线不卡免费观看| 色婷婷综合久久久久中文字幕1| 亚洲国产日韩一区无码精品久久久| 首页亚洲中字| 亚洲天堂av在线播放| 国产精品美女高潮无套| 精品国产精品国产偷麻豆| 亚洲最大中文字幕| 亚洲国产精品第一页| 日韩区一区二| 亚洲韩国日本中文字幕| 9.1在线观看免费| 亚洲深夜福利在线观看| 亚洲天天在线日亚洲洲精| 国产又粗又猛又爽又黄的视频四季 | 国产色在线观看| 一区二区三区在线视频免费 | 日产国产欧美视频一区精品| 国产精品一区电影| 国产福利资源在线| 99热国产精品| 亚洲狠狠婷婷综合久久久| 国产又粗又猛又黄又爽无遮挡 | 黄色免费观看视频网站| 黑人巨大精品| 欧美日韩的一区二区| 少妇欧美激情一区二区三区| 欧美精品国产白浆久久久久| 国产亚洲精品美女久久久久| 希岛爱理中文字幕| aa级大片欧美三级| 国产精品日日摸夜夜添夜夜av| 国产精品视频一二区| 成人综合婷婷国产精品久久蜜臀| 精品久久蜜桃| 老司机福利在线视频| 亚洲.国产.中文慕字在线| 激情综合网俺也去| 玖玖精品在线| 亚洲激情视频在线播放| 婷婷综合在线视频| 激情成人综合| 欧美亚洲成人精品| 国内自拍视频在线播放| 激情伊人五月天久久综合| 国产精品18毛片一区二区| a天堂在线资源| 亚洲图片欧美视频| 17c国产在线| 色棕色天天综合网| 九九综合九九综合| 日韩xxx视频| 99精品在线观看视频| 吴梦梦av在线| 91另类视频| 日韩电影在线观看中文字幕| 成人免费精品动漫网站| 日韩精品高清不卡| 国产一区免费视频| 日本aa在线| 欧美精品国产精品| av电影网站在线观看| 亚洲狼人精品一区二区三区| 92看片淫黄大片欧美看国产片| 经典三级在线| 大伊人狠狠躁夜夜躁av一区| 潘金莲一级淫片aaaaa| 欧美国产美女| 国产精品久久91| 真实新婚偷拍xxxxx| 成人av网站免费| 成人短视频在线观看免费| 青青在线精品| 这里只有精品久久| 中文字幕在线天堂| 2022国产精品视频| 91丨porny丨探花| 天堂√中文最新版在线| 精品久久久久久久久久久院品网| 亚洲一区电影在线观看| 麻豆精品一二三| 亚洲国产高清国产精品| 日本高清不卡一区二区三区视频| 亚洲精品视频久久| 精品不卡一区二区| 91蜜桃免费观看视频| 国产精品自拍片| 农村少妇一区二区三区四区五区| 欧美高清视频在线观看| 欧美a视频在线观看| 成人av网站大全| 人妻熟妇乱又伦精品视频| 美女视频免费精品| 欧美孕妇孕交黑巨大网站| 亚洲 欧美 自拍偷拍| 一区二区中文视频| 九九九九九国产| 亚洲91视频| 7777奇米亚洲综合久久| a级片免费在线观看| 亚洲第一精品电影| 欧美一级特黄视频| 国产日韩欧美一区二区三区乱码 | 黄色日韩网站视频| 亚洲av综合色区| 加勒比视频一区| 欧美一区亚洲一区| av大片在线播放| 日韩一区二区中文字幕| 国产精品theporn动漫| 青青草成人在线观看| 污视频在线免费观看一区二区三区| 秋霞国产精品| 美日韩精品视频免费看| 黑人乱码一区二区三区av| 无吗不卡中文字幕| 亚洲码无人客一区二区三区| 日韩av成人高清| 精品嫩模一区二区三区| 99精品在免费线中文字幕网站一区| 欧美丰满老妇厨房牲生活| 亚洲aaaaaaa| 欧美日韩免费观看一区三区| 久操免费在线视频| 国产日韩欧美不卡| 欧美69精品久久久久久不卡| 欧美综合二区| 国产伦精品一区二区三区| xxx欧美xxx| 久久成年人免费电影| 水莓100国产免费av在线播放| 一本久久a久久精品亚洲| 欧美老熟妇一区二区三区| 97超碰欧美中文字幕| 鲁一鲁一鲁一鲁一av| 日韩一级欧洲| 伊人狠狠色丁香综合尤物| 日韩免费小视频| 美女少妇精品视频| 大胆av不用播放器在线播放 | 国产成人综合亚洲| 日本在线观看大片免费视频| 亚洲午夜小视频| 国产91免费在线观看| 欧美视频一区二区三区四区 | 久久婷婷影院| 欧美视频在线第一页| 成人精品视频| 久久久久久久久久久久久9999| 91久久青草| 国产精品久久久久77777| av伦理在线| 欧美成人免费大片| 99青草视频在线播放视| 日韩精品在线观| 性中国古装videossex| 精品视频123区在线观看| 久久久国产精品成人免费| 亚洲精品国产a| 北条麻妃在线观看视频| 久久久久久久综合狠狠综合| 久久久久久婷婷| 国产精品一区二区三区99| 国产高清视频网站| 我不卡伦不卡影院| 五月婷婷综合色| 免费欧美一区| 欧美一区1区三区3区公司| 精品国产乱子伦一区二区| 亚洲已满18点击进入在线看片| 朝桐光一区二区| 国产福利视频一区二区| 亚洲日本天堂| 日本一区二区三区在线播放| 国产高清视频色在线www| 欧美激情中文字幕乱码免费| а√中文在线资源库| 欧美日本在线观看| 在线观看国产小视频| 91成人国产精品| 一级做a爰片久久毛片| 色婷婷综合久久久久中文一区二区| 黄色片视频网站| 午夜视黄欧洲亚洲| 亚洲欧美在线视频免费| 精品久久久久久亚洲国产300| 日本在线视频中文字幕| 五月激情综合色| 狠狠人妻久久久久久综合| 色综合久久久久久久| 中文字幕精品视频在线观看| 色噜噜狠狠一区二区三区果冻| 极品久久久久久久| 亚洲国产成人午夜在线一区| 538精品视频| 136国产福利精品导航| 国产免费一区二区三区四区| 亚洲少妇最新在线视频| 极品盗摄国产盗摄合集| 一区二区三区**美女毛片| 精品视频在线观看免费| 精品久久久久久| 波多野结衣日韩| 欧美日韩久久久一区| 国产美女精品视频国产| 精品乱人伦小说| 亚洲av电影一区| 伊人一区二区三区久久精品| 天天影视久久综合| 欧美日韩成人免费| 欧美一级鲁丝片| 国产精品自拍小视频| 亚洲二区av| 高清国语自产拍免费一区二区三区| 国产精品xxx在线观看| 欧洲精品在线一区| 99久久综合狠狠综合久久aⅴ| 成人短视频在线观看免费| 国产精品免费看| 久久久久xxxx| 播五月开心婷婷综合| 亚洲精品国产精品国自产网站| 亚洲人成网站精品片在线观看| 国产香蕉在线视频| 欧美视频在线不卡| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 亚洲人成网站在线播| 岛国中文字幕在线| 深夜精品寂寞黄网站在线观看| 国产超级va在线视频| 91高清在线免费观看| 欧洲午夜精品| 久久久久久久久久久久久久一区| 欧美aaaa视频| 免费在线观看亚洲视频| 国产真实乱对白精彩久久| 男操女免费网站| 粉嫩13p一区二区三区| 亚洲成人黄色av| 亚洲国产日韩一级| 88av在线视频| 日韩精品极品视频免费观看| 黄色免费在线观看| 国产成人av在线| 麻豆一区二区| bt天堂新版中文在线地址| 蜜桃久久久久久| 国产熟妇搡bbbb搡bbbb| 97久久精品人人做人人爽50路| 中文字幕资源站| 在线观看91视频| 午夜视频www| 久久久久久久影院| 9999在线精品视频| 视频一区视频二区视频三区视频四区国产| 欧美日韩福利| 久久精品一卡二卡| 国产成人精品www牛牛影视| 小早川怜子久久精品中文字幕| 亚洲一区二区三区三| 国产日韩免费视频| yellow中文字幕久久| 色天使综合视频| 欧美性大战久久久久| 99成人在线| 国产精品无码网站| 亚洲第一福利一区| 亚洲av无码片一区二区三区| 日韩中文字幕在线| 成人精品一区二区三区电影| 欧美成人在线免费观看| 国产免费成人| 亚洲天堂2024| 五月综合激情网| 神马午夜在线观看| 久久免费国产视频| 精品按摩偷拍| 99精品在线免费视频| 99精品国产99久久久久久白柏| 久久精品人妻一区二区三区| 精品日韩一区二区三区免费视频| 一区二区三区伦理| 97人人干人人| 亚洲午夜电影| 无码任你躁久久久久久老妇| 亚洲激情校园春色| 亚洲xxx在线| 国内偷自视频区视频综合| 精品午夜电影| 久久久久狠狠高潮亚洲精品| 国产一区二区精品在线观看| 国产免费嫩草影院| 欧美日韩在线直播| av色图一区| 国产日韩精品在线观看| 国产精品91一区二区三区| 波多野结衣国产精品| 亚洲三级在线免费观看| 国产黄色小视频在线观看| 欧美国产第一页| 女同久久另类99精品国产| 高清在线观看免费| 国产女主播一区| 97人妻精品一区二区三区| 九九九久久国产免费| 精品伊人久久久| 久久久久久久少妇| 国产精品久久久久久久裸模| 国产精品久久久久久久免费| 欧美精品免费在线观看| 国产精品白丝一区二区三区| 99999精品视频| 国产精品免费视频观看| 国产绳艺sm调教室论坛| 久久免费国产视频| 欧美日韩精品在线一区| 伊人精品视频在线观看| 午夜日韩在线观看| 午夜在线播放| 国产精品播放| 日韩国产在线观看一区| 黑鬼狂亚洲人videos| 日韩成人在线视频观看| 成人午夜亚洲| 97视频在线免费| 久久激情视频| 熟女av一区二区| 亚洲精品美女在线观看| 高清在线一区| 男人的天堂avav| 国产午夜精品久久| 黄色a在线观看| 国产精品一区二区三区在线播放| 韩国久久久久| 成人一级片免费看| 亚洲国产天堂久久国产91| 狂野欧美性猛交xxxx| 97国产精东麻豆人妻电影| 亚洲欧洲99久久| 免费a级毛片在线观看| 2014亚洲精品|