Google的jib打包工具

15 7月

今天看群里说起jib工具,就专门看了一下。地址:https://github.com/GoogleContainerTools/jib。

jib旨在让开发者使用他们熟悉的工具更轻松地将 Java 应用程序容器化。

来看看一般的应用如何容器化

  1. 编译构建出jar包或者war包
  2. 编写Dockerfile
  3. Docker 构建镜像到本地或者发布到仓库

第一步还好说,构建本身由于maven和gradle的存在变得相当便利,如果是spring boot的应用,直接打包jar包,其他的用war插件打包war包就行了。

第二步编写Dockerfile,大部分Dockerfile的内容都是相似的,准备对应的java环境,拷贝jar或者war,然后配置参数,指定启动脚本。

第三步也很直接,直接执行 docker build . -f Dockerfile

那么Google专门开源的这个jib工具能够改善的点在何处呢?

看看Google官方的说明:

  1. 简单 – Jib 采用 Java 实现,并作为 Maven 或 Gradle 构建的一部分运行。你不需要维护 Dockerfile ,甚至无需创建包含所有依赖项的 JAR 包。
  2. 快速 – Jib 利用镜像分层和注册表缓存来实现快速、增量构建。它读取你的构建配置,将应用分到不同的层中,只重新构建和推送发生变更的层。
  3. 可重现 – Jib 支持根据 Maven 和 Gradle 的构建元数据进行声明式的容器镜像构建,只要输入保持不变,就可以通过配置重复创建相同的镜像。

第一个优势就是干掉了Dockerfile,第三个优势类似于jar包和war包本身没有明显的版本信息,重现性低。

那么第二个快速应该就是一个主要优势了,之前的Docker打包是以整个jar包或者war包而基础的,那么每个Docker镜像的拉取量就是整个jar包或者war包,而jib的打包是基于层的,具体的步骤还是有点复杂,官网有专门的文档说明,查看下面两个链接:

https://github.com/GoogleContainerTools/distroless

https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html

发表评论

电子邮件地址不会被公开。