zoukankan      html  css  js  c++  java
  • 作为一个Java开发你用过Jib吗

    1. 前言

    Jib,容器化你的Java应用

    JibGoogle开发的可以直接构建 Java应用的DockerOCI镜像的类库,以MavenGradle插件形式提供。它最骚操作的是可以在没有Docker守护程序的情况下构建,也就是说,您不必在计算机上安装docker守护程序!尽管Spring Boot 2.3.0.RELEASE已经推出了构建镜像的功能,胖哥还是忍不住要试试Jib

    其实最骚的还是名字。

    2. Docker构建流程和Jib的构建流程

    没有对比就没有伤害。我们还是要对比一下这两者的构建流程。

    Docker构建流程需要我们先把项目打成Jar然后编写Dockerfile,然后使用Docker构建功能进行构建镜像、运行容器。流程如下:

    docker构建流程

    而Jib是这样构建的:

    Jib构建流程

    作为一个Java开发者,不用再关心各种无关的命令和操作,只需要专注于Java,而且高效稳定以及可复用的增量构建。为什么Jib能这么快而高效?

    传统上,将Java应用程序与应用程序Jar一起构建为单个图像层,而Jib的构建策略将Java应用程序分为多层,以进行更细化的增量构建。更改代码时,仅重建更改,而不重建整个应用程序。

    3. Jib构建Spring Boot应用

    接下来我将演示如何将Spring Boot 应用打成镜像并上传到Dockerhub仓库。

    Maven工程为例,我们只需要在pom.xml中引入Jib Maven 插件。默认情况下Jib会把我们打好的镜像上传到Googlegcr.io仓库,实际中我们会把打好的镜像上传到私有仓库,所以我们要加一些个性化配置。这里我以dockerhub仓库为例添加一些个性化配置:

    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>2.4.0</version>
        <configuration>
            <!-- 相当于 Dockerfile 中的 FROM -->
            <from>
                <image>amazoncorretto:8</image>
            </from>
            <to>
                <!--构建镜像名称,这里我使用maven中定义的项目名称-->
                <image>daxus/${project.name}</image>
                <!--私有仓库的账号密码-->
                <auth>
                    <username>felordcn</username>
                    <password>yourpassword</password>
                </auth>
                <!--Docker 镜像的 tag 这里使用maven定义的版本号-->
                <tags>
                    <tag>
                        ${project.version}
                    </tag>
                </tags>
            </to>
        </configuration>
    </plugin>
    

    然后在项目根目录执行mvn clean compile jib:build就可以了。

    上传到dockerhub中的镜像

    其实也可以简单引入Jib插件:

    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>2.4.0</version>
    </plugin>
    

    只不过我们的命令会更复杂一些,需要指定一些必要的参数,例如:

    mvn clean compile jib:build 
        -Djib.to.image=myregistry/myimage:latest 
        -Djib.to.auth.username=$USERNAME 
        -Djib.to.auth.password=$PASSWORD
    

    更多的定制命令可参考官方文档:

    https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#extended-usage

    4. 总结

    Jib使用起来非常简单,让开发人员以Java的风格来完成Docker镜像的构建,能够大大改善编程的体验。多多关注:码农小胖哥 获取更多有用的编程干货教程。

    关注公众号:Felordcn 获取更多资讯

    个人博客:https://felord.cn

  • 相关阅读:
    黑产江湖
    FW/IDS/IPS/WAF等安全设备部署方式及优缺点
    SOAPA来临,SIEM时代终结?
    美国爱因斯坦计划4
    零基础如何学好安卓开发
    协同办公系统能为企业带来怎样的影响?
    阿里腾讯开撕,钉钉的广告打到腾讯的地盘了
    bug管理工具为开发者工作带来哪些改变?
    开发人员必备的几款bug管理工具
    教你玩转产品管理系统iClap(PC端功能篇)
  • 原文地址:https://www.cnblogs.com/felordcn/p/13201163.html
Copyright © 2011-2022 走看看