写点什么

谷歌开源 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:058606
用户头像

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

关注

评论

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

全景解读亚马逊云科技的 GenBI 解决方案:三大路径助力企业智能决策升级

亚马逊云科技 (Amazon Web Services)

用友BIP废钢智能判级5发布,开启废钢智能定价新时代

用友BIP

不懂供应链,别谈利润增长和成本降低了!

积木链小链

数字化转型 智能制造 供应链管理

🚀 革命性升级!JimuReport 积木报表 v2.1.0 版本震撼发布

JEECG低代码

数据可视化 报表 数据大屏 报表工具 大屏设计器

燃动一夏,活力绽放 | MO六月运动月精彩收官

MatrixOrigin

Boris FX CrumplePop Complete for Mac(终极音频插件工具包)

晨光熹微

用友BIP废钢智能判级系统成功入选京津冀数字经济协同发展典型案例

用友BIP

WebGL开发数字孪生技术方案

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

Magic Disk Cleaner for Mac(磁盘垃圾清理工具)

晨光熹微

ACI.dev - 开源AI代理工具集成平台

qife122

开源项目 AI代理

QAT 查表算子调优 01|如何定位引起误差的查表算子

地平线开发者

自动驾驶 算法工具链 地平线征程6

中国电信国际:打造全球化招聘“数字样板间”

用友BIP

ForkLift for Mac(文件管理程序)

晨光熹微

在AI技术唾手可得的时代,挖掘新需求才是真正的挑战

qife122

技术趋势 AI应用

夜莺监控 V8 正式版,来了!

巴辉特

夜莺监控 开源监控 IT运维监控

Navicat for SQL Server for mac(数据库管理工具)

晨光熹微

科学吃瓜!华为否认抄袭阿里,这次我站华为

程序员晚枫

华为 开源 阿里 大模型

数智焕新·根植中国:跨国企业在华经营的税务合规与数智化转型之路

用友BIP

CST圆极化贴片天线阵列 --- 频域F-solver, 领域分解法 DDM

思茂信息

cst cst操作 cst仿真软件 CST软件 CST Studio Suite

DaVinci Fusion Studio for Mac(影视特效合成软件)

晨光熹微

【HarmonyOS】鸿蒙应用开发Text控件常见错误

GeorgeGcs

验收!用友BIP助力湖北盐业集团数智化转型迈入新阶段

用友BIP

MIAOYUN | 每周AI新鲜事儿(06.27-07.04)

MIAOYUN

人工智能 AI AI 原生云 AI Agent,

在AI时代,挖掘真实需求比技术实现更具挑战性

qife122

开源项目 AI技术

【HarmonyOS】富文本编辑器RichEditor详解

GeorgeGcs

告别高库存低周转:AI重塑零售商品效率!

第七在线

AI 背单词 App 的开发流程

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI背单词

大数据-33 HBase 整体架构 HMaster HRegion

武子康

Java 大数据 hadoop 分布式 HBase

Magic Disk Cleaner for Mac(磁盘垃圾清理工具)

晨光熹微

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