做为一个Java开发你用过Jib吗

1. 前言

Jib,容器化你的Java应用

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

其实最骚的仍是名字。

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

没有对比就没有伤害。咱们仍是要对比一下这二者的构建流程。github

Docker构建流程须要咱们先把项目打成Jar而后编写Dockerfile,而后使用Docker构建功能进行构建镜像、运行容器。流程以下:docker

docker构建流程

而Jib是这样构建的:编程

Jib构建流程

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

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

3. Jib构建Spring Boot应用

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

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

<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就能够了。spa

上传到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/GoogleCont...

4. 总结

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

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

我的博客:https://felord.cn

相关文章
相关标签/搜索