硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

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

关注

评论

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

Linux升级指南:保持系统安全和高效运行

不在线第一只蜗牛

Linux 架构 运维 前端

作为铭文跨链赛道龙头,SoBit 有何突出之处?

BlockChain先知

为什么市场称SoBit 是铭文跨链赛道真正的龙头?

石头财经

年底离职潮来了!来聊聊程序员的离职跳槽

伤感汤姆布利柏

程序员 涨薪 离职 跳槽

AI技术进展和总结

destiny

风起云涌的2023年,异彩纷呈的AI世界

白日梦

AI 大模型

阿里云瑶池数据库2023年度精彩时刻回顾

阿里云瑶池数据库

数据库 阿里云 云原生 年终总结

2023 IoTDB Summit:天谋科技 CTO 乔嘉林《IoTDB 企业版 V1.3: 时序数据管理一站式解决方案》

Apache IoTDB

深入解析 C 语言中的 for 循环、break 和 continue

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

云原生安全:保护云端应用的新策略与挑战

范艺笙冉

元旦出游季,让这些华为APP成为你的旅途好帮手

最新动态

2023年各社区的数据

坚果

坚果派、

探索AI的无限可能:从概念到实践

future

Vue 发布 3.4 「灌篮高手」版本

南城FE

JavaScript Vue 前端开发

漫谈人工智能在各行业的应用以及促进和发展

迷彩

人工智能 AI 发展趋势 AIGC

2023,我所见到的智能中国

脑极体

AI

元旦攻略已送达 小艺陪你开启“跨年”模式

最新动态

物联网时序数据库 IoTDB 荣获清华校友三创大赛 AI 大数据赛道种子组一等奖

Apache IoTDB

基于E3PO平台设计的一种自适应360°视频传输方案

Geek-yan

定了!12月31日19时30分,来华为视频看2023-2024湖南卫视芒果TV跨年晚会

最新动态

人工智能与教育:机遇与挑战

啊川..

数划云实力入选中国信通院“2023央国企数字化产业赋能图谱”

数划云

BMF 框架:多媒体处理的强大利器

RoSofteg

BMF

多功能屏幕录像机:Mac FoneLab Screen Recorder 激活中文

胖墩儿不胖y

录屏工具 Mac软件 屏幕录屏软件

Web3的未来:DePIN项目引领物理基础设施的去中心化革命

TechubNews

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