使用jib插件為Java應用構建鏡像的方法

簡介

Java應用開發的容器化,需要制作docker鏡像。要是用戶本地沒安裝docker,可以使用jib制作出帶有鏡像的tar文件。

Jib提供瞭四種使用方式:

  • Maven插件:jib-maven-plugin
  • Gradle插件:jib-gradle-plugin
  • Java庫: Jlib Core
  • Jib CLI

jib構建工具主要包含瞭四個強大的功能。

  • build :提供瞭創建鏡像並推送到遠程倉庫功能。
  • buildTar :提供創建一個包含鏡像的tar文件功能。
  • dockerBuild:提供創建docker鏡像到本地功能。
  • exportDocker:rContext提供創建dockerfile功能。

當編譯構建是在沒有docker環境的情況下構建,使用build命令和dockerBuild命令並不能制作出鏡像,隻能使用buildTar命令制作出一個包含鏡像的tar文件。

使用Maven插件將Java應用構建為docker鏡像

想瞭解更多參數,閱讀官方文檔。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節點用來設置鏡像的基礎鏡像,相當於Docerkfile中的FROM關鍵字-->
                    <from>
                        <!--使用openjdk官方鏡像,tag是8-jdk-stretch,表示鏡像的操作系統是debian9,裝好瞭jdk8-->
                        <image>openjdk:8-jdk-stretch</image>
                    </from>
                    <to>
                        <!--鏡像名稱和tag,使用瞭mvn內置變量${project.version},表示當前工程的version-->
                        <image>lendea/hellojib:${project.version}</image>
                    </to>
                    <!--容器相關的屬性-->
                    <container>
                        <!--jvm內存參數-->
                        <jvmFlags>
                            <jvmFlag>-Xms256m</jvmFlag>
                            <jvmFlag>-Xmx256m</jvmFlag>
                        </jvmFlags>
                        <!--要暴露的端口-->
                        <ports>
                            <port>8081</port>
                        </ports>
                    </container>
                </configuration>
            </plugin>
  • from標簽:設置基礎鏡像,相當於dockerfile中的FROM關鍵字,這裡推薦使用SWR中的鏡像,構建時下載速度快並且穩定。
  • to標簽:設置制作出來的鏡像的鏡像名稱和tag。
  • container標簽:設置容器的相關屬性,jvm內存參數,端口等。

2.創建構建任務並執行

# -Dmaven.test.skip=true: 跳過單元測試
# -U: 每次構建檢查以來更新,可避免緩存中快照版本依賴不更新問題,但會犧牲部分性能
# -e -X: 打印調試信息,定位疑難構建問題時建議使用此參數構建
# -B: 以batch模式運行,可避免日志打印出現ArrayIndexOutOfBoundsException異常

mvn compile jib:buildTar -Dmaven.test.skip=true -U -e -X -B

在java項目的target目錄下,可以看到生成的tar鏡像。

3.使用tar鏡像
執行docker load -i xxx.tar 命令將tar文件的鏡像加載到本地鏡像倉庫,再使用docker run --rm -p 8081:8081 lendea/hellojib:0.0.1等命令啟動容器來測試功能。

到此這篇關於使用jib插件為Java應用構建鏡像的文章就介紹到這瞭,更多相關jib插件構建鏡像內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: