在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

鸿蒙车机管理开发:企业车队集中管理

yimapingchuan

鸿蒙开发实战:车机安全系统智能联网

yimapingchuan

我在618主场,和3位顶尖技术博士聊了聊

京东科技开发者

技术分享 | Prompt Caching:帮你大幅降本提速

伊克罗德信息科技

HarmonyOS开发笔记:车机近场通信中的创新应用

yimapingchuan

韧性驱动增长,全球经济发展中的中国动力

易观分析

ManageEngine卓豪简化变更管理的工作方法(四)

ServiceDesk_Plus

变更管理 ManageEngine卓豪

Karmada v1.14 版本发布!新增联邦资源配额管理能力

华为云原生团队

云计算 容器 云原生

移动AI一周年,5G-A和AI究竟把世界变成什么样?

白洞计划

AI

基于YOLOv8的学生课堂行为识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

HarmonyOS开发实战:赋能车机多模态安全系统

yimapingchuan

鸿蒙开发实战:车机远程安全通信

yimapingchuan

HarmonyOS开发实战:打造智能车机环境感知系统

yimapingchuan

GAITC2025|张科:端云一体大模型推理应用实战

京东科技开发者

HarmonyOS开发实战:Weather Service Kit在新闻应用的智能天气融合

chengxujianke

鸿蒙开发实战:优化车机安全系统性能

yimapingchuan

泡泡玛特爆火,年轻人的新圈子里,AI+潮玩能否占有一席之地

腾讯云音视频

实时音视频 泡泡玛特 AI实时对话 AI玩具

【KWDB创作者计划】- KWDB:高性能时序数据库,赋能AIoT场景,引领时序数据库新纪元的高效引擎 - 新零售可回溯视屏时序数据系统最佳实践

KaiwuDB

澳鹏多模态标注工具:构建AI认知的语义桥梁

澳鹏Appen

多模态 多模态数据 多模态模型

鸿蒙开发笔记:Wallet Kit实现新闻付费会员无感支付

chengxujianke

鸿蒙开发实战:Basic Services Kit打造新闻应用的底层服务框架

chengxujianke

鸿蒙车机开发实战:车载多模态交互控制

yimapingchuan

鸿蒙开发实战:优化车机安全系统网络性能

yimapingchuan

HarmonyOS开发实战:车机安全认证体系

yimapingchuan

鸿蒙开发实战:实现车机手写安全签名系统

yimapingchuan

鸿蒙开发笔记:Asset Store Kit加速新闻应用的资源管理

chengxujianke

鸿蒙开发实战:车机多服务智能协同

yimapingchuan

鸿蒙开发实战:车机安全状态实时传送

yimapingchuan

加锁失效,非锁之过,加之错也

京东科技开发者

我在618主场,和3位顶尖技术博士聊了聊

京东科技开发者

裁员、量产搁置,特斯拉Optimus团队恐迎至暗时刻!

机器人头条

科技 特斯拉 人形机器人 具身智能 optimus

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