谷歌发布开源工具Jib,可大大简化Java App容器化过程

2018 年 7 月 10 日 高效开发运维
谷歌云平台官方博客宣布发布了新的开源工具 Jib,一款快速而简单的容器镜像构建工具,能使容器技术和 Java 编程语言更加无缝地协同工作,使 Java 开发人员能更轻松地跨用例部署和控制 Java 应用程序。
关于 Jib

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 如何优化开发

Jib 利用 Docker 镜像的分层功能,与构建系统集成,通过以下方式优化 Java 容器镜像的构建:

  1. 简单:Jib 在 Java 中实现,并作为 Maven 或 Gradle 构建的一部分运行。你不需要维护 Dockerfile,无需运行 Docker 守护程序,甚至无需创建具有所有依赖项的 JAR。由于 Jib 与 Java 构建紧密集成,因此可以访问打包应用程序所需的所有信息。在后续容器构建中,Java 构建中的任何变体都将被自动选择。

  2. 快速:Jib 利用镜像分层和注册表缓存来实现快速、增量构建。 Jib 可读取构建配置,将应用程序放到不同的层(依赖项,资源,类)中,仅重建和推送已更改的层。在项目快速迭代时,Jib 仅将已更改的层,而不是整个应用程序推送到注册表,这样可节省构建时间。

  3. 可重现:Jib 还允许应用程序开发人员使用声明性语言从 Maven 和 Gradle 元数据构建容器镜像,因此只要输入保持不变,就可以通过配置创建可重现的构建镜像。

如何使用 Jib 容器化 Java 应用程序

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!点击查看原文进入大会官网了解更多信息。


登录查看更多
0

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
推荐|Google最热门31款开源项目资源
全球人工智能
4+阅读 · 2017年11月24日
Arxiv
13+阅读 · 2019年11月14日
Arxiv
3+阅读 · 2018年10月8日
Arxiv
3+阅读 · 2018年5月28日
Arxiv
4+阅读 · 2018年1月29日
VIP会员
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
推荐|Google最热门31款开源项目资源
全球人工智能
4+阅读 · 2017年11月24日
Top
微信扫码咨询专知VIP会员