文档首页/ 编译构建 CodeArts Build/ 常见问题/ Maven构建/ 如何使用jib-maven-plugin插件构建Maven工程制作镜像
更新时间:2024-10-09 GMT+08:00

如何使用jib-maven-plugin插件构建Maven工程制作镜像

问题现象

由于CodeArts官方提供的maven镜像中没有docker环境,所以,使用docker-maven-plugin插件构建的项目通过CodeArts的编译构建制作镜像时会报错,比如:

INFO: I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: No such file or directory

本文将指导用户在没有docker的maven环境使用jib-maven-plugin插件制作出带有镜像的tar文件。

处理方法

  1. 修改需要制作镜像的项目代码。

    找到pom文件并引入插件,内容如下:

    <!--使用jib插件-->
                <plugin>
                    <groupId>com.google.cloud.tools</groupId>
                    <artifactId>jib-maven-plugin</artifactId>
                    <version>1.3.0</version>
                    <configuration>
                        <!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
                        <from>
                            <!—建议使用swr公开镜像,下载速度快,更稳定 -->
                            <image>swr.example.myxxcloud.com/xxxx/xxx:xxxxx</image>
                        </from>
                        <to>
                            <!--镜像名称和tag,使用了mvn内置变量${project.version},表示当前工程的version-->
                            <image> hellojib:${project.version}</image>
                        </to>
                        <!--容器相关的属性-->
                        <container>
                            <!--jvm内存参数-->
                            <jvmFlags>
                                <jvmFlag>-Xms4g</jvmFlag>
                                <jvmFlag>-Xmx4g</jvmFlag>
                            </jvmFlags>
                            <!--要暴露的端口-->
                            <ports>
                                <port>8080</port>
                            </ports>
                        </container>
                    </configuration>
                </plugin>
    • From标签:设置基础镜像,相当于dockerfile中的FROM关键字,这里推荐使用SWR中的镜像,构建时下载速度快并且稳定。
    • To标签:设置制作出来的镜像的镜像名称和tag。
    • Container标签:设置容器的相关属性,jvm内存参数,端口等。
    • mainClass标签:设置项目启动的主程序,也就是Spring Boot的Application类。
  2. 创建构建任务并执行。
    1. 添加两个构建步骤:Maven构建和上传软件包到软件发布库,并将Maven构建默认命令修改为:
      mvn compile jib:buildTar -Dmaven.test.skip=true -U -e -X –B

      jib构建工具主要包含了四个强大的功能,由于编译构建是在没有docker环境的情况下构建,所以使用build命令和dockerBuild命令并不能制作出镜像,只能使用buildTar命令制作出一个包含镜像的tar文件。

      • build提供了创建镜像并推送到远程仓库功能。
      • buildTar提供创建一个包含镜像的tar文件功能。
      • dockerBuild提供创建docker镜像到本地功能。
      • exportDockerContext提供创建dockerfile功能。

      构建成功后,日志显示如下信息:

    2. 在java工程的target目录下,可以看到生成了名为jib-image.tar的文件,同时任务会通过上传软件到发布库步骤上传到发布库。
  3. 使用tar镜像。

    通过执行脚本或下载命令从发布库中将tar文件下载到要部署应用的服务器上,执行docker load命令将tar文件的镜像加载到本地镜像仓库,再使用docker run等命令启动镜像即可。