在一个群里看到有群友讨论
Jib这个东西,大致了解了Jib是Java开发者构建Dokcer镜像的工具。由于现在开发的项目也用到了Docker,开发使用下来的感受就是:每构建一个项目都得写一个Dockerfile(按理说这个应该的是DevOps的工作→_→),write a project,provide a Dockerfile.于是今天就看了下官方的关于Jib介绍的博客,打算试着翻译下(主要是文章不长,哈哈哈哈),翻译的不好,还请移步阅读原文,哈哈
原文博客链接:Introducing Jib — build Java Docker images better
容器使得Java开发者更加接近“write once,run anyway”(一次编写,到处运行)的工作流程,但是容器化一个Java应用程序并不是一件简单的事,通常的流程是,需要你编写为应用程序编写一个Dockerfile,以root运行Docker的守护进程,等待构建的完成,最后将构建好的镜像push到远程注册中心。并不是所有的Java开发者都是容器专家,仅仅是构建一个JAR(这句真不知如何翻译,“what happened to just building a JAR?”)
为了应对这种挑战(需要Java开发人构建容器),我们很高心向大家介绍Jib—谷歌一个开源的Java容器化工具,能够让Java开发者使用他们所熟悉的工具来构建容器。Jib是一个简单快读的容器构建工具,不需要你编写Dockerfile和安装Docker就能够处理将Java应用程序打包成一个容器镜像的所有步骤,通过集成Maven 或 Gradle,添加Maven或Gradle插件,就能快速的将你的Java应用程序打包成容器.
Docker构建常规流程:

使用Jib后构建容器的流程:

Jib是如何使得开发更便利的
Jib通过借鉴Docker layering(分层)的优点,并与构建系统集成,通过以下方式优化Java容器镜像构建过程:
- 简单—
Jib是基于Java实现的,并作为Maven或Gradle构建中的一部分运行,你不需要维护Dockerfile,启动Docker的守护进程,不用担心会创建一个添加了所有依赖包的大Jar包.由于Jib与Java构建过程的紧密结合,能够访问你所需要打包的程序,因此在容器构建后将自动检测到你的程序构建的变化。 - 快速—
Jib利用镜像layering和注册缓存来实现快速,增量的构建,Jib会读取你的构建配置,将你的程序组织成不同的layer(项目依赖,资源文件和class文件),,并且只会重新构建和push已更改的layer.在项目快速迭代的过程当中,每一次构建Jib只会push已更改的layer到注册中心而不是整个项目从而节省很多时间。 - 可复用—
Jib支持以声明的方式从Maven和Gradle的愿数据构建容器镜像,因此只要你输入保持不变,就可以通过更改配置来实现复用性
如何使用Jib来容器化你的应用
Jib可以作为Maven或Gradle的一个插件来使用,只需很少的配置。将Jib插件添加到你的构建定义当中并配置最终的镜像,如果你是注册中的中心是私服,确保在私服中为Jib配置了凭证 .最简单方法是使用credential helper 之类的工具,例如docker-credential-gcr . Jib同样提供构建镜像到Docker中.
在Maven中使用Jib:
1 | <plugin> |
命令:
1 | # Builds to a container image registry. |
在Gradle中使用Jib:
1 | plugins { |
命令:
1 | # Builds to a container image registry. |
我们希望大家使用Jib更便捷的开发Java,Jib适用于大多数cloud providers,尝试使用Jib并一起改进它,GitHub地址:github.com/GoogleContainerTools/jib