Jib插件 SpringBoot應用 Docker部署的簡單應用

1. Jib插件簡介

官網翻譯

Jib無需Docker守護程序即可為Java應用程序構建優化的Docker和OCI映像-無需深入掌握Docker最佳實踐。它可以作為Maven和Gradle的插件以及Java庫使用。

我的翻譯

jib是一款谷歌開源的依賴管理插件,專門為java應用構建Docker鏡像。他屏蔽了復雜的Docker配置,無需編寫Dockerfile。例如在Maven環境中只需要在POM文件中簡單配置,即可實現服務鏡像的構建及PUSH鏡像到Docker私服倉庫中。

這里是這個插件的GITHUB地址


2. 使用環境

  • Jib插件依賴Docker環境及Docker倉庫
  • Maven
  • SpringBoot 打包Jar應用
    說明:本例中開發環境為 Win10+windows版Docker+官方Docker Registry倉庫+Idea+Maven+SpringBoot

3. 加入Jib插件

在項目pom文件中加入如下配置

<build>
        <finalName>tba-gateway</finalName>
        <plugins>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>1.8.0</version>
                <configuration>
                    <from>
                        <image>java:8</image>
                    </from>
                    <to>
                        <!--要推送的私服鏡像地址-->
                        <image>127.0.0.1:5000/wangqichang/${build.finalName}</image>
                        <tags>
                            <!--鏡像的tag-->
                            <tag>${parent.version}</tag>
                        </tags>
                        <!--配置了密碼的私服需要在此配置認證,官網建議放在Maven的Setting中配置-->
                        <!--<auth>-->
                            <!--<username>wangqichang</username>-->
                            <!--<password>倉庫密碼</password>-->
                        <!--</auth>-->
                    </to>
                    <!--docker倉庫沒有啟用https的需要配置忽略安全-->
                    <allowInsecureRegistries>true</allowInsecureRegistries>
                    <container>
                        <!--服務的啟動類-->
                        <mainClass>com.xxx.xxx.xxx.GatewayApplication</mainClass>
                        <!--使用當前時間-->
                        <useCurrentTimestamp>true</useCurrentTimestamp>
                    </container>

                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

4. 打包及鏡像推送

直接使用Maven Package打包命令,如圖,成功后將自動推送到倉庫中


image.png

我這里使用的是官方registry,使用命令curl -XGET 倉庫IP:端口/v2/_catalog可以看到鏡像wangqichang/tba-gateway被成功推送到倉庫

image.png

注意事項:

  • 請使用國內代理鏡像,否則拉取基礎鏡像時可能會超時失敗
  • 使用有認證功能的私有倉庫時需要配置認證,否則無法PUSH

5. 拉取鏡像,啟動容器

使用docker pull 私服IP:端口/鏡像名稱:版本

image.png

使用docker images可以查看鏡像

使用docker run命令啟動容器,完整命令如下:
docker run -t -e "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848" -e "spring.cloud.nacos.discovery.namespace=8694e5b4-2501-48fa-acde-c76d3d77fc44" -p 9056:9055 localhost:5000/wangqichang/tba-gateway
解釋如下
docker run -t -e "啟動參數key=參數value" -e -p 宿主機端口:容器端口 本地鏡像名稱|ID
注意:

  • docker run命令可以向java命令傳遞參數,針對不同的基礎鏡像有不同的傳參方式
    成功啟動應用,日志如下


    image.png
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容