Jib无痛构建Docker镜像不影响第二天上班

网友投稿 267 2022-10-22

Jib无痛构建Docker镜像不影响第二天上班

1. 前言

Jib,容器化你的Java应用

​Jib​是​Google​开发的可以直接构建 ​Java​应用的​Docker​和​OCI​镜像的类库,以​Maven​和​Gradle​插件形式提供。它最骚操作的是可以在没有​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​会把我们打好的镜像上传到​Google​的​gcr.io​仓库,实际中我们会把打好的镜像上传到私有仓库,所以我们要加一些个性化配置。这里我以​dockerhub​仓库为例添加一些个性化配置:

com.google.cloud.tools jib-maven-plugin 2.4.0 amazoncorretto:8 daxus/${project.name} felordcn yourpassword ${project.version}

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

上传到dockerhub中的镜像

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

com.google.cloud.tools jib-maven-plugin 2.4.0

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

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分布式系列教程(45) -安装Nacos(Docker或安装包)
下一篇:JVM的类加载器和双亲委派模式你了解吗
相关文章

 发表评论

暂时没有评论,来抢沙发吧~