作为一个Java开发你用过Jib吗
2020/6/28 14:27:11
本文主要是介绍作为一个Java开发你用过Jib吗,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 前言
Jib是Google开发的可以直接构建 Java应用的Docker和OCI镜像的类库,以Maven和Gradle插件形式提供。它最骚操作的是可以在没有Docker守护程序的情况下构建,也就是说,您不必在计算机上安装docker守护程序!尽管Spring Boot 2.3.0.RELEASE已经推出了构建镜像的功能,胖哥还是忍不住要试试Jib。
其实最骚的还是名字。
2. Docker构建流程和Jib的构建流程
没有对比就没有伤害。我们还是要对比一下这两者的构建流程。
Docker构建流程需要我们先把项目打成Jar然后编写Dockerfile,然后使用Docker构建功能进行构建镜像、运行容器。流程如下:
而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仓库为例添加一些个性化配置:
<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
就可以了。
其实也可以简单引入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
这篇关于作为一个Java开发你用过Jib吗的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25JAVA副业资料:新手入门及初级提升指南
- 2024-11-25Java副业资料:入门到实践的全面指南
- 2024-11-25Springboot应用的多环境打包项目实战
- 2024-11-25SpringBoot应用的生产发布项目实战入门教程
- 2024-11-25Viite多环境配置项目实战:新手入门教程
- 2024-11-25Vite多环境配置项目实战入门教程