使用jib插件為Java應(yīng)用構(gòu)建鏡像的方法
簡介
Java應(yīng)用開發(fā)的容器化,需要制作docker鏡像。要是用戶本地沒安裝docker,可以使用jib制作出帶有鏡像的tar文件。
Jib提供了四種使用方式:
- Maven插件:jib-maven-plugin
- Gradle插件:jib-gradle-plugin
- Java庫: Jlib Core
- Jib CLI
jib構(gòu)建工具主要包含了四個強(qiáng)大的功能。
- build :提供了創(chuàng)建鏡像并推送到遠(yuǎn)程倉庫功能。
- buildTar :提供創(chuàng)建一個包含鏡像的tar文件功能。
- dockerBuild:提供創(chuàng)建docker鏡像到本地功能。
- exportDocker:rContext提供創(chuàng)建dockerfile功能。
當(dāng)編譯構(gòu)建是在沒有docker環(huán)境的情況下構(gòu)建,使用build命令和dockerBuild命令并不能制作出鏡像,只能使用buildTar命令制作出一個包含鏡像的tar文件。
使用Maven插件將Java應(yīng)用構(gòu)建為docker鏡像
想了解更多參數(shù),閱讀官方文檔。https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin
1.修改需要制作鏡像的項目代碼:找到pom文件聲明jib插件,
pom.xml文件中聲明Jib插件:
<!--使用jib插件-->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.3.0</version>
<configuration>
<!--from節(jié)點用來設(shè)置鏡像的基礎(chǔ)鏡像,相當(dāng)于Docerkfile中的FROM關(guān)鍵字-->
<from>
<!--使用openjdk官方鏡像,tag是8-jdk-stretch,表示鏡像的操作系統(tǒng)是debian9,裝好了jdk8-->
<image>openjdk:8-jdk-stretch</image>
</from>
<to>
<!--鏡像名稱和tag,使用了mvn內(nèi)置變量${project.version},表示當(dāng)前工程的version-->
<image>lendea/hellojib:${project.version}</image>
</to>
<!--容器相關(guān)的屬性-->
<container>
<!--jvm內(nèi)存參數(shù)-->
<jvmFlags>
<jvmFlag>-Xms256m</jvmFlag>
<jvmFlag>-Xmx256m</jvmFlag>
</jvmFlags>
<!--要暴露的端口-->
<ports>
<port>8081</port>
</ports>
</container>
</configuration>
</plugin>
- from標(biāo)簽:設(shè)置基礎(chǔ)鏡像,相當(dāng)于dockerfile中的FROM關(guān)鍵字,這里推薦使用SWR中的鏡像,構(gòu)建時下載速度快并且穩(wěn)定。
- to標(biāo)簽:設(shè)置制作出來的鏡像的鏡像名稱和tag。
- container標(biāo)簽:設(shè)置容器的相關(guān)屬性,jvm內(nèi)存參數(shù),端口等。
2.創(chuàng)建構(gòu)建任務(wù)并執(zhí)行
# -Dmaven.test.skip=true: 跳過單元測試 # -U: 每次構(gòu)建檢查以來更新,可避免緩存中快照版本依賴不更新問題,但會犧牲部分性能 # -e -X: 打印調(diào)試信息,定位疑難構(gòu)建問題時建議使用此參數(shù)構(gòu)建 # -B: 以batch模式運行,可避免日志打印出現(xiàn)ArrayIndexOutOfBoundsException異常 mvn compile jib:buildTar -Dmaven.test.skip=true -U -e -X -B
在java項目的target目錄下,可以看到生成的tar鏡像。
3.使用tar鏡像
執(zhí)行docker load -i xxx.tar 命令將tar文件的鏡像加載到本地鏡像倉庫,再使用docker run --rm -p 8081:8081 lendea/hellojib:0.0.1等命令啟動容器來測試功能。
到此這篇關(guān)于使用jib插件為Java應(yīng)用構(gòu)建鏡像的文章就介紹到這了,更多相關(guān)jib插件構(gòu)建鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot的@ControllerAdvice處理全局異常詳解
這篇文章主要介紹了SpringBoot的@ControllerAdvice處理全局異常詳解,但有時卻往往會產(chǎn)生一些bug,這時候就破壞了返回數(shù)據(jù)的一致性,導(dǎo)致調(diào)用者無法解析,所以我們常常會定義一個全局的異常攔截器,需要的朋友可以參考下2024-01-01
如何在Spring?Boot中使用MyBatis訪問數(shù)據(jù)庫
MyBatis可以通過簡單的XML或者注解來配置和映射原始類型,接口,和Java POJO為數(shù)據(jù)庫中記錄,使用MyBatis幫助我們解決各種問題,本文介紹如何在Spring?Boot中使用MyBatis訪問數(shù)據(jù)庫,感興趣的朋友一起看看吧2023-11-11
Java中LinkedList詳解和使用示例_動力節(jié)點Java學(xué)院整理
LinkedList 是一個繼承于AbstractSequentialList的雙向鏈表。它也可以被當(dāng)作堆棧、隊列或雙端隊列進(jìn)行操作。接下來通過示例代碼給大家詳細(xì)介紹java中l(wèi)inkedlist的使用,需要的朋友參考下吧2017-05-05
調(diào)用java.lang.Runtime.exec的正確姿勢分享
這篇文章主要介紹了調(diào)用java.lang.Runtime.exec的正確姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
使用Java反射模擬實現(xiàn)Spring的IoC容器的操作
這篇文章主要介紹了使用Java反射模擬實現(xiàn)Spring的IoC容器的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
JUC中的wait與notify方法實現(xiàn)原理詳解
這篇文章主要介紹了JUC中的wait與notify方法實現(xiàn)原理,在進(jìn)行wait()之前,就代表著需要爭奪Synchorized,而Synchronized代碼塊通過javap生成的字節(jié)碼中包含monitor?enter和monitor?exit兩個指令2023-03-03

