7 月 9 日,谷歌云平台官方博客宣布发布了新的开源工具 Jib,一款快速而简单的容器镜像构建工具,能使容器技术和 Java 编程语言更加无缝地协同工作,使 Java 开发人员能更轻松地跨用例部署和控制 Java 应用程序。
容器技术和 Java 语言都是企业应用开发的支柱技术。几十年来,Java 一直被用来编写商业软件,至今仍无处不在。容器技术是构建可在不同类型基础架构中工作的便携式应用程序的常用方法。
容器使 Java 开发人员比以往任何时候都更接近“write once, run anywhere”的工作流程。但容器化一个 Java 应用程序并非易事:你必须编写 Dockerfile,以 root 身份运行 Docker 守护进程,等待构建完成,最后还要将镜像推送到远程注册表。并非所有 Java 开发人员都是容器专家,当以传统方式执行时,将 Java 代码打包到容器中是一个单调乏味的多阶段过程。
为了应对这一挑战,谷歌发布了 Jib,将容器化 Java 应用程序的流程整合成为一个单一的步骤。它不需要你编写 Dockerfile 或安装 Docker,能直接集成到 Maven 和 Gradle 中 - 只需要将插件添加到构建中,就可立即容器化 Java 应用程序。
Docker 构建流程:
Jib 构建流程:
Jib 利用 Docker 镜像的分层功能,与构建系统集成,通过以下方式优化 Java 容器镜像的构建:
简单:Jib 在 Java 中实现,并作为 Maven 或 Gradle 构建的一部分运行。你不需要维护 Dockerfile,无需运行 Docker 守护程序,甚至无需创建具有所有依赖项的 JAR。由于 Jib 与 Java 构建紧密集成,因此可以访问打包应用程序所需的所有信息。在后续容器构建中,Java 构建中的任何变体都将被自动选择。
快速:Jib 利用镜像分层和注册表缓存来实现快速、增量构建。 Jib 可读取构建配置,将应用程序放到不同的层(依赖项,资源,类)中,仅重建和推送已更改的层。在项目快速迭代时,Jib 仅将已更改的层,而不是整个应用程序推送到注册表,这样可节省构建时间。
可重现:Jib 还允许应用程序开发人员使用声明性语言从 Maven 和 Gradle 元数据构建容器镜像,因此只要输入保持不变,就可以通过配置创建可重现的构建镜像。
Jib 可作为 Maven 和 Gradle 的插件使用,仅需要最少的配置,只需将插件添加到构建定义中并配置目标镜像即可。如果要构建到私有注册表,确保使用注册表的凭证(credential)配置 Jib。 最简单的方法是使用 docker-credential-gcr 之类的凭证助手。 如果需要,Jib 还提供了其他规则用于给 Docker 守护进程构建镜像。
Jib on Maven:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>0.9.0</version>
<configuration>
<to>
<image>gcr.io/my-project/image-built-with-jib</image>
</to>
</configuration>
</plugin>
# Builds to a container image registry.
$ mvn compile jib:build
# Builds to a Docker daemon.
$ mvn compile jib:dockerBuild
Jib on Gradle:
plugins {
id 'com.google.cloud.tools.jib' version '0.9.0'
}
jib.to.image = 'gcr.io/my-project/image-built-with-jib'
# Builds to a container image registry.
$ gradle jib
# Builds to a Docker daemon.
$ gradle jibDockerBuild
Jib 使 Java 开发人员更容易使用容器,可以进一步扩展企业对容器技术的采用。Jib 可在绝大多数云厂商提供的云中使用。
Jib 开源地址:
https://github.com/GoogleContainerTools/jib
参考链接:
https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html
活动推荐
8 月 18 日,InfoQ 将举办一场面向技术人的区块链大会!超过二十个区块链落地案例,区块链前沿技术剖析,区块链生态、服务盘点和解读,尽在 BCCon2018!点击查看原文进入大会官网了解更多信息。