写点什么

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

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

关注

评论

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

Navicat Premium 15:多数据库统一管理,安全与效率兼得!

春天的风暖暖的

AirServer 7 for Mac:多设备同时投屏,打造高效新体验!

春天的风暖暖的

Magnet Mac多屏设计必备:Magnet 跨屏管理窗口,效率翻倍

春天的风暖暖的

BetterDisplay Pro for mac(显示器管理管理软件)

春天的风暖暖的

UUID 替代方案详解

俞凡

架构 算法

Photoshop 2025 for Mac:AI 抠图 + 3D AR 集成

春天的风暖暖的

Altera进一步扩展 Agilex™ FPGA 产品组合,全面提升开发体验

E科讯

Meta基础设施演进与AI技术革命

qife122

分布式系统 数据中心 AI基础设施 GPU集群

Microsoft Office LTSC 2024 for Mac中文 office全家桶

春天的风暖暖的

安全领域的碰撞测试:BAS如何用实证取代假设

qife122

网络安全 安全验证

iStat Menus 6 for Mac:硬件传感器+网络监控,极客必备的系统诊断工具!

春天的风暖暖的

mac触摸板增强神器:BetterTouchTool for Mac中文

春天的风暖暖的

nPlayer for Mac(NAS局域网移动端视频播放神器)

春天的风暖暖的

网站减碳实战指南:如何通过性能优化降低环境影响

qife122

网站优化 数字可持续性

从素材到成片:Final Cut Pro 一站式解决剪辑难题

春天的风暖暖的

macOS Big Sur 11:系统介绍与新特性全解析-MacOS支持型号

春天的风暖暖的

AnyGo for Mac:一键虚拟定位 AnyGo 模拟目的地位置

春天的风暖暖的

Geekbench AI for mac 跨平台的 AI 基准测试

春天的风暖暖的

Postman for Mac中/英文版 API管理开发工具

春天的风暖暖的

Premiere Pro 2022 for Mac:让后期制作更高效、更专业

春天的风暖暖的

电脑动态壁纸高清:Dynamic Wallpaper for Mac中文版

春天的风暖暖的

工业管理 项目管理经验总结(15)

万里无云万里天

项目管理 工业 工厂运维

GitLab沦为僵尸网络——共享Runner如何引发大规模DoS攻击

qife122

网络安全 云基础设施

Principle for Mac汉化 交互式UI原型设计神器

春天的风暖暖的

工业管理 项目管理经验总结(16)

万里无云万里天

项目管理 工业 工厂运维

绕过Cloudflare IP白名单限制的技术解析

qife122

网络安全 Cloudflare 漏洞绕过

Axure RP 9 for Mac:从草图到高保真原型,一天搞定

春天的风暖暖的

Mac 上的终极影院!Infuse Pro 一键解锁 4K/HDR/杜比全景声

春天的风暖暖的

Illustrator 2024 for Mac(AI2024领先的矢量图形软件)

春天的风暖暖的

MacCleaner Pro for Mac(mac系统综合清理维护工具包)

春天的风暖暖的

公民科学研究奖项"众人智慧"表彰技术创新项目

qife122

人机交互 公民科学

谷歌开源Java镜像构建工具Jib_Java_Qingyang Chen_InfoQ精选文章