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

  • 相关阅读:
    AngularJS Insert Update Delete Using PHP MySQL
    Simple task manager application using AngularJS PHP MySQL
    AngularJS MySQL and Bootstrap Shopping List Tutorial
    Starting out with Node.js and AngularJS
    AngularJS CRUD Example with PHP, MySQL and Material Design
    How to install KVM on Fedora 22
    Fake_AP模式下的Easy-Creds浅析
    河南公务员写古文辞职信
    AI
    政协委员:最大愿望是让小学生步行上学
  • 原文地址:https://www.cnblogs.com/felordcn/p/13201163.html
Copyright © 2011-2022 走看看