使用jib插件為Java應用構建鏡像的方法
簡介
Java應用開發(fā)的容器化,需要制作docker鏡像。要是用戶本地沒安裝docker,可以使用jib制作出帶有鏡像的tar文件。
Jib提供了四種使用方式:
- Maven插件:jib-maven-plugin
- Gradle插件:jib-gradle-plugin
- Java庫: Jlib Core
- Jib CLI
jib構建工具主要包含了四個強大的功能。
- build :提供了創(chuàng)建鏡像并推送到遠程倉庫功能。
- buildTar :提供創(chuàng)建一個包含鏡像的tar文件功能。
- dockerBuild:提供創(chuàng)建docker鏡像到本地功能。
- exportDocker:rContext提供創(chuàng)建dockerfile功能。
當編譯構建是在沒有docker環(huán)境的情況下構建,使用build命令和dockerBuild命令并不能制作出鏡像,只能使用buildTar命令制作出一個包含鏡像的tar文件。
使用Maven插件將Java應用構建為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é)點用來設置鏡像的基礎鏡像,相當于Docerkfile中的FROM關鍵字--> <from> <!--使用openjdk官方鏡像,tag是8-jdk-stretch,表示鏡像的操作系統(tǒng)是debian9,裝好了jdk8--> <image>openjdk:8-jdk-stretch</image> </from> <to> <!--鏡像名稱和tag,使用了mvn內(nèi)置變量${project.version},表示當前工程的version--> <image>lendea/hellojib:${project.version}</image> </to> <!--容器相關的屬性--> <container> <!--jvm內(nèi)存參數(shù)--> <jvmFlags> <jvmFlag>-Xms256m</jvmFlag> <jvmFlag>-Xmx256m</jvmFlag> </jvmFlags> <!--要暴露的端口--> <ports> <port>8081</port> </ports> </container> </configuration> </plugin>
- from標簽:設置基礎鏡像,相當于dockerfile中的FROM關鍵字,這里推薦使用SWR中的鏡像,構建時下載速度快并且穩(wěn)定。
- to標簽:設置制作出來的鏡像的鏡像名稱和tag。
- container標簽:設置容器的相關屬性,jvm內(nèi)存參數(shù),端口等。
2.創(chuàng)建構建任務并執(zhí)行
# -Dmaven.test.skip=true: 跳過單元測試 # -U: 每次構建檢查以來更新,可避免緩存中快照版本依賴不更新問題,但會犧牲部分性能 # -e -X: 打印調試信息,定位疑難構建問題時建議使用此參數(shù)構建 # -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
等命令啟動容器來測試功能。
到此這篇關于使用jib插件為Java應用構建鏡像的文章就介紹到這了,更多相關jib插件構建鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring Cloud中FeignClient實現(xiàn)文件上傳功能
這篇文章主要為大家詳細介紹了Spring Cloud中FeignClient實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04java可變參數(shù)(不定向參數(shù))的作用與實例
這篇文章主要給大家介紹了關于java可變參數(shù)(不定向參數(shù))的作用與實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04SpringBoot中利用AOP和攔截器實現(xiàn)自定義注解
本文將通過攔截器+AOP實現(xiàn)自定義注解,在這里攔截器充當在指定注解處要執(zhí)行的方法,aop負責將攔截器的方法和要注解生效的地方做一個織入,感興趣的可以嘗試一下2022-06-06java中@JSONField和@JsonProperty注解的使用說明及對比
@JSONField與@JsonProperty隸屬兩個不同的包,前者是阿里系的fastjson包,后者是spring?boot官方使用的jackson包,本文主要介紹了java中@JSONField和@JsonProperty注解的使用說明及對比,感興趣的可以了解一下2023-11-11Java中使用MyBatis-Plus操作數(shù)據(jù)庫的實例
本文主要介紹了Java中使用MyBatis-Plus操作數(shù)據(jù)庫的實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-02-02