写点什么

谷歌开源 Java 镜像构建工具 Jib

  • 2018-07-11
  • 本文字数:1246 字

    阅读完需:约 4 分钟

容器的出现让 Java 开发人员比以往任何时候都更接近“编写一次,到处运行”的工作流程,但要对 Java 应用程序进行容器化并非易事:你必须编写 Dockerfile,以 root 身份运行 Docker 守护进程,等待构建完成,最后将镜像推送到远程注册中心。但并非所有的 Java 开发人员都是容器专家,像以前那样只需要构建一个 JAR 包的日子已经结束了吗?

为了应对这一挑战,谷歌开源了一个 Java 容器化工具 Jib,有了这个工具,Java 开发人员可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 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 只讲发生变更的层(而不是整个应用程序)推送到注册表来节省宝贵的构建时间。
  3. 可重现——Jib 支持根据 Maven 和 Gradle 的构建元数据进行声明式的容器镜像构建,因此,只要输入保持不变,就可以通过配置重复创建相同的镜像。

如何使用 Jib 来容器化你的应用程序

Jib 可作为 Maven 和 Gradle 的插件使用,并且只需要做出最少的配置。只需将插件添加到构建定义中并配置目标镜像即可。如果要将镜像推送到私有注册中心,要为 Jib 配置所需的秘钥。最简单的方法是使用 docker-credential-gcr 之类的凭证助手。Jib 还提供了其他的一些规则,用于将镜像构建到 Docker 守护进程。

在 Maven 中使用 Jib:

复制代码
<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

在 Gradle 中使用 Jib:

复制代码
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 项目地址: github.com/GoogleContainerTools/jib

2018-07-11 04:058415
用户头像

发布了 731 篇内容, 共 473.2 次阅读, 收获喜欢 2008 次。

关注

评论

发布
暂无评论
发现更多内容

将ChatGPT引入企业财务共享服务的探讨与思考

用友BIP

Premiere新手入门教程:Premiere Pro (PR) mac版基础教程合集

Rose

Premiere Pro下载 Premiere教程 PR转场预设

虾皮shopee根据ID取商品详情 API (shopee.item_get):利用虾皮shopee API提升电商平台用户转化率与客单价

技术冰糖葫芦

API

一文了解:仿真技术的巨头——美国Altair公司

智造软件

CAE CAE软件 altair

如何使用代码混淆技术保护移动应用程序安全

SVN管理工具Cornerstone for mac入门教程

Rose

SVN管理工具 cornerstone 4 破解版 Cornerstone入门教程

好玩有趣的桌面宠物Desktop Goose for mac

Rose

Desktop Goose mac破解版 mac桌面宠物

技术菜鸟如何提升自己的能力

老张

个人成长 自动化测试 技术提升

【第七在线】如何让智能商品系统提供深入的供应链决策支持?

第七在线

如何下载会员视频?推荐使用唐尼downie 4 !

Rose

mac软件下载 视频下载工具 Downie 4 Mac版 Downie 4中文版

随着 AI 的兴起,Web3 停滞不前丨 RTE 开发者日报 Vol.123

声网

智能商品管理系统相比传统商品管理在自动化程度上有哪些优势?

第七在线

软件测试/测试开发/全日制/测试管理丨Redis内存数据库

测试人

软件测试

软件测试/测试开发/全日制/测试管理丨MongoDB NoSQL数据库

测试人

软件测试

"5.25秒变0.023秒:小程序图片优化全攻略"

陇锦

小程序 微信小程序 前端 前端开发 js

户外交通LED显示屏必须具备的特点

Dylan

技术 网络 计算机 LED显示屏 led显示屏厂家

当创建pvc后,kubernetes组件如何协作

华为云开发者联盟

Kubernetes 开发 华为云 华为云开发者联盟

Java AtomicReference

0x5d0de9

Java

零代码集成自动化的实现逻辑是什么?

RestCloud

零代码 APPlink

Apache Doris 聚合函数源码阅读与解析|源码解读系列

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

英文版sketch怎么转为中文,Sketch中英文切换教程

Rose

Mac矢量图设计 Sketch 99 Sketch中英文切换教程

一篇文章了解做仿真软件的达索系统-达索代理商

思茂信息

cst abaqus软件 达索系统

康威定律:AI时代的IT组织变革

FN0

AI 软件开发 组织设计

制程架构并驾齐驱,软件硬件双核驱动 英特尔携手合作伙伴兑现AI PC承诺

E科讯

Office 2013-2021专业增强版激活许可证 Mac/win

Rose

office许可证 office下载

Photoshop 2024 崩溃怎么办?

Rose

Photoshop启动时崩溃 PS冻结

Final Cut Pro for Mac(fcpx视频剪辑)v10.7.1 中文版

Rose

2024律师课程推荐:iCourt律师执行实务集训营(赠《执行实务大礼包》)

科技汇

第35期 | GPTSecurity周报

云起无垠

EVE-NG强大的网络模拟器和实验平台

小齐写代码

谷歌开源Java镜像构建工具Jib_Java_Appu Goundan_InfoQ精选文章