写点什么

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

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

关注

评论

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

稳!Zilliz助力XTransfer基于RAG打造B2B外贸金融加速器

Zilliz

Milvus zilliz cloud 大模型应用 企业知识库

DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能

合合技术团队

人工智能 数字化 文档解析 票据

融合创新,智领未来 | 华为云云原生精彩亮相2024华为云开源开发者论坛

华为云开源

云原生 开发者大会 华为云开源

嘉为蓝鲸受邀参加信通院2024数字化转型发展大会,携手客户斩获多项荣誉!

嘉为蓝鲸

数字化 中国信通院 研运一体化

淘宝电商API全解析:赋能商家,驱动电商新生态

代码忍者

API 接口 pinduoduo API

渠道伙伴业务系统上线!嘉为蓝鲸WeOps渠道战略重要里程碑

嘉为蓝鲸

#WeOps

35 位委员参会,龙蜥社区 11 月技术委员会会议圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥技术委员会

【DevOps系列】效能洞察的准备工作指南

嘉为蓝鲸

DevOps 研发 效能平台 效能洞察

如何设置AD域用户仅登录到指定的计算机?AD域管理软件

运维有小邓

AD域 IT自动化运维 AD域管理

CAD测坐标功能常见问题集锦

在路上

cad cad看图 CAD测量

【DevOps系列】企业度量难题破解:全面解析度量平台的核心能力

嘉为蓝鲸

DevOps 效能洞察 研发效能度量

倒计时1天!龙蜥社区可信计算SIG MeetUp即将在北京召开

OpenAnolis小助手

操作系统 可信计算 龙蜥meetup

京东电商搜索:大模型生成式检索优化实践

京东零售技术

大模型

【DevOps系列】DevOps全过程质量管控

嘉为蓝鲸

DevOps 研发 质量管控

法国 mixtral一种具有开放权重的高质量稀疏专家混合模型

测吧(北京)科技有限公司

测试

【DevOps系列】制品库在行动:本地管理与多地同步的实战应用

嘉为蓝鲸

制品库 制品管理

【DevOps系列】保护你的制品:制品的安全策略与实践

嘉为蓝鲸

DevOps 制品库 制品管理

OASA走进三未信安、奇安信和360,共建龙蜥安全生态

OpenAnolis小助手

操作系统 龙蜥安全联盟

《Django 5 By Example》阅读笔记:p493-p520

codists

Python django

【DevOps系列】赋能开发:理解仓库代理的力量

嘉为蓝鲸

制品库管理 制品库 制品仓库 Packages

从虚拟到现实:数字孪生与数字样机的进化之路

DevOps和数字孪生

【DevOps系列】升级你的制品:探讨制品晋级的战略

嘉为蓝鲸

制品管理 制品仓库 制品仓库 Packages

智能运维树标杆!嘉为蓝鲸通过信通院首批AI Cloud Stability评估

嘉为蓝鲸

运维 AIOPS 大模型 中国信通院

【DevOps系列】企业效能洞察的必要性和重要性

嘉为蓝鲸

DevOps 效能洞察

【DevOps系列】精准度量:GQM与4Keys在研发效能中的应用

嘉为蓝鲸

DevOps 研发效能 效能度量 GQM 4Keys

DevOps系列之从前线到后勤:制品管理的演变历史

嘉为蓝鲸

DevOps 制品库 制品管理

牛市来啦?交易量大涨!金融机构如何强化应急体系,筑牢运维安全防线?

嘉为蓝鲸

运维 可观测 应急响应 IT运维管理

【DevOps系列】效能洞察4步走:金融企业效能度量转型实践

嘉为蓝鲸

DevOps 效能平台 效能洞察

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