写点什么

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

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

关注

评论

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

基于低代码平台搭建应用程序

树上有只程序猿

软件开发 低代码 JNPF

uni-app 打包ios上架app store流程

拒绝连锡!3种偷锡焊盘轻松拿捏

华秋电子

PCBA

C/C++ 开发SCM服务管理组件

不在线第一只蜗牛

c 开发语言 c++、

鸿蒙学堂·创新实训营再度启航深圳,中国移动、国家电网等40余家企业参与

最新动态

IDC最新报告,增速减缓+AI增势,阿里云视频云中国市场第一

阿里云CloudImagine

云计算 视频云

欢迎提报 | 2023年龙蜥社区优秀贡献者评选正式启动

OpenAnolis小助手

操作系统 创新 龙蜥社区 优秀贡献者

云服务器入门指南:你需要知道的基础知识与选择策略

一只扑棱蛾子

云服务器

特斯拉开源 Roadster 文件随便用;微软 Copilot AI 技术开放或不对大陆开放丨 RTE 开发者日报 Vol.92

声网

北京同仁堂签署鸿蒙生态合作协议,加速推进鸿蒙原生应用开发

最新动态

大型企业资金管理常见6个难题,用友Fast by BIP“快速”破解

用友BIP

资金管理

springboot集成工作流实例分享(源码)

金陵老街

【网易云商】构建高效 SaaS 系统的技术要点与最佳实践

网易云信

SaaS 平台

如何调用电商API接口获取相关商品的推荐列表?

技术冰糖葫芦

API API 文档

Presto+Alluxio数据平台实战

数新网络官方账号

大数据

一文弄懂竞品分析 - 竞品分析是什么| 从哪些方面分析 | 竞品分析报告怎么写?

彭宏豪95

效率工具 产品经理 在线白板 竞品分析 SWOT

耐世特与Tactile Mobility合作的路面探测与早期预警软件获创新奖

财见

SRM采购招投标一体化系统(源码)

金陵老街

招投标 SRM系统 采购系统 供应商管理系统

几种常见的排序算法总结

不在线第一只蜗牛

算法 排序算法 教程分享

低代码平台提升软件开发效率

互联网工科生

软件开发 低代码 JNPF

CAKE OF FORTUNE(蛋糕矿工)BSC链系统开发

l8l259l3365

保姆级连接FusionInsight MRS kerberos Hive

数新网络官方账号

Java hive 华为云 Dbeaver

数字化供应链助力电子产业高质量发展,华秋2023电子设计与制造技术研讨会成功举办!

华秋电子

PCB设计

如何使用电商平台API接口?

技术冰糖葫芦

API API Gateway API 文档

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