基于Jib的Java镜像构建实践

Jib是Google开发的对Java应用快速构建镜像的工具。具体地,其支持Maven、Gradle插件等形式
基于Jib的Java镜像构建实践
abstract.png

实践

传统地,对Java服务构建镜像时,我们借助Spotify的dockerfile-maven-plugin插件。先将服务打为Jar包,同时编写相应的Dockerfile文件。最后利用该插件通过本地的Docker环境进行镜像构建。从上其实不难看出,对于Java开发者而言上述构建流程非常繁琐,而现在Jib改变了这一现状。其使得开发者无需编写Dockerfile即可快速构建服务镜像并推送至指定仓库。下面即是对一个普通的SpringBoot通过Jib进行镜像构建的例子。其POM配置如下所示。这里补充下我们Java服务的运行端口为8069,故我们同样在POM文件暴露该端口

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    
    ...
    <groupId>com.aaron</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>5.3.0</version>
    <packaging>jar</packaging>
    ...
    
    <build>
        <plugins>

            <plugin>
                <!--Jib插件-->
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>3.0.0</version>

                <!-- 配置Maven执行任务 -->
                <executions>
                    <execution>
                        <!-- 将插件的dockerBuild目标与Maven的package阶段进行绑定 -->
                        <goals>
                            <goal>dockerBuild</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                </executions>

                <configuration>
                    <!--设置基础镜像, 作用类似于Dockerfile的FROM指令-->
                    <from>
                        <image>openjdk:8-jre-alpine</image>
                    </from>

                    <!--设置目标镜像信息-->
                    <to>
                        <!--配置仓库名、镜像名-->
                        <image>docker.io/aaron1995/${project.artifactId}</image>
                        <!--配置Tag信息-->
                        <tags>
                            <tag>${project.version}</tag>
                        </tags>
                        <!--配置仓库的账户、密码-->
                        <auth>
                            <username>aaron1995</username>
                            <password>foo123456</password>
                        </auth>
                    </to>

                    <!--设置容器信息-->
                    <container>
                        <!--暴露容器端口-->
                        <ports>
                            <port>8069</port>
                        </ports>
                    </container>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

Jib支持以下功能,具体地

  • dockerBuild:构建镜像
  • build:构建镜像并推送到远程仓库

现在我们使用Jib插件的build目标来构建镜像并推送到远程仓库

基于Jib的Java镜像构建实践
figure 1.jpg
基于Jib的Java镜像构建实践
figure 2.jpg

现在我们利用该镜像创建容器,验证下。通过访问服务接口,证明服务运行正常

基于Jib的Java镜像构建实践
figure 3.jpg

原文始发于微信公众号(青灯抽丝):基于Jib的Java镜像构建实践

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156385.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!