使用jib插件為Java應(yīng)用構(gòu)建鏡像的方法
簡(jiǎn)介
Java應(yīng)用開(kāi)發(fā)的容器化,需要制作docker鏡像。要是用戶(hù)本地沒(méi)安裝docker,可以使用jib制作出帶有鏡像的tar文件。
Jib提供了四種使用方式:
- Maven插件:jib-maven-plugin
- Gradle插件:jib-gradle-plugin
- Java庫(kù): Jlib Core
- Jib CLI
jib構(gòu)建工具主要包含了四個(gè)強(qiáng)大的功能。
- build :提供了創(chuàng)建鏡像并推送到遠(yuǎn)程倉(cāng)庫(kù)功能。
- buildTar :提供創(chuàng)建一個(gè)包含鏡像的tar文件功能。
- dockerBuild:提供創(chuàng)建docker鏡像到本地功能。
- exportDocker:rContext提供創(chuàng)建dockerfile功能。
當(dāng)編譯構(gòu)建是在沒(méi)有docker環(huán)境的情況下構(gòu)建,使用build命令和dockerBuild命令并不能制作出鏡像,只能使用buildTar命令制作出一個(gè)包含鏡像的tar文件。
使用Maven插件將Java應(yīng)用構(gòu)建為docker鏡像
想了解更多參數(shù),閱讀官方文檔。https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin
1.修改需要制作鏡像的項(xiàng)目代碼:找到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é)點(diǎn)用來(lái)設(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> <!--鏡像名稱(chēng)和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)建時(shí)下載速度快并且穩(wěn)定。
- to標(biāo)簽:設(shè)置制作出來(lái)的鏡像的鏡像名稱(chēng)和tag。
- container標(biāo)簽:設(shè)置容器的相關(guān)屬性,jvm內(nèi)存參數(shù),端口等。
2.創(chuàng)建構(gòu)建任務(wù)并執(zhí)行
# -Dmaven.test.skip=true: 跳過(guò)單元測(cè)試 # -U: 每次構(gòu)建檢查以來(lái)更新,可避免緩存中快照版本依賴(lài)不更新問(wèn)題,但會(huì)犧牲部分性能 # -e -X: 打印調(diào)試信息,定位疑難構(gòu)建問(wèn)題時(shí)建議使用此參數(shù)構(gòu)建 # -B: 以batch模式運(yùn)行,可避免日志打印出現(xiàn)ArrayIndexOutOfBoundsException異常 mvn compile jib:buildTar -Dmaven.test.skip=true -U -e -X -B
在java項(xiàng)目的target目錄下,可以看到生成的tar鏡像。
3.使用tar鏡像
執(zhí)行docker load -i xxx.tar
命令將tar文件的鏡像加載到本地鏡像倉(cāng)庫(kù),再使用docker run --rm -p 8081:8081 lendea/hellojib:0.0.1
等命令啟動(dòng)容器來(lái)測(cè)試功能。
到此這篇關(guān)于使用jib插件為Java應(yīng)用構(gòu)建鏡像的文章就介紹到這了,更多相關(guān)jib插件構(gòu)建鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)非阻塞式服務(wù)器的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的非阻塞式服務(wù)器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下2023-05-05Spring Cloud中FeignClient實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了Spring Cloud中FeignClient實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04java可變參數(shù)(不定向參數(shù))的作用與實(shí)例
這篇文章主要給大家介紹了關(guān)于java可變參數(shù)(不定向參數(shù))的作用與實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04SpringBoot中利用AOP和攔截器實(shí)現(xiàn)自定義注解
本文將通過(guò)攔截器+AOP實(shí)現(xiàn)自定義注解,在這里攔截器充當(dāng)在指定注解處要執(zhí)行的方法,aop負(fù)責(zé)將攔截器的方法和要注解生效的地方做一個(gè)織入,感興趣的可以嘗試一下2022-06-06java中@JSONField和@JsonProperty注解的使用說(shuō)明及對(duì)比
@JSONField與@JsonProperty隸屬兩個(gè)不同的包,前者是阿里系的fastjson包,后者是spring?boot官方使用的jackson包,本文主要介紹了java中@JSONField和@JsonProperty注解的使用說(shuō)明及對(duì)比,感興趣的可以了解一下2023-11-11Java中使用MyBatis-Plus操作數(shù)據(jù)庫(kù)的實(shí)例
本文主要介紹了Java中使用MyBatis-Plus操作數(shù)據(jù)庫(kù)的實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02