NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

【Linux】工具介绍vim及gcc详解。

百度搜索:蓝易云

vim Linux 运维 云服务器 GCC

etcd-workbench一款免费好用的ETCD客户端,支持SSH Tunnel、版本对比

北风

Docker etcd tools etcd-client

纹理贴图如何为游戏角色增添质感

3D建模设计

3D渲染 3D材质纹理贴图 3D材质编辑器

GLTF编辑器设置3D纺织纹理贴图

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图

项目经验还写外卖和商城?来看看异构数据源数据流转服务DatalinkX

李晓飞

flink springboot

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

长安区块链

软件开发给外包公司,开发需求功能纸面合同化有多重要

软件开发-梦幻运营部

One Switch 让你的 Mac 也能拥有控制中心

Rose

One Switch下载 苹果Mac 必备 系统功能快速开关工具

支持M1/M2,Axure RP 9授权密钥激活可用 附 Axure RP 9激活教程

Rose

Axure RP 9汉化 原型设计软件 Axure RP 9破解版 Axure RP 9授权

好用的软件卸载工具:TrashMe激活最新版

mac大玩家j

Mac软件 卸载工具 软件卸载

3D 建模中的 GLTF、USDZ 和 GLB 3D 文件格式

3D建模设计

3D模型 GLTF glb USDZ

关于在容器中,nignx代理后端多个服务如何保证后端服务的地址不变呢?

百度搜索:蓝易云

nginx 云计算 Linux 运维 云服务器

技术写作概述:内容分析、平台和转化追踪以及内容老化

小万哥

程序人生 软件工程 后端开发 技术写作 内容分析

如何避免购买体育直播系统源码时隐藏费用陷阱

软件开发-梦幻运营部

Office2019 for Mac(办公套件全家桶) v16.78正式激活版

mac

苹果mac Windows软件 office 2019

3D模型轻量化

3D建模设计

3D轻量化 三维模型轻量化

clickhouse重启,以及修改数据存储目录后重启失败的解决办法

百度搜索:蓝易云

云计算 Linux 运维 Clickhouse 服务器

Helm vs Kustomize 深度比较

俞凡

Kubernetes 云原生 Helm Kustomize

交互式数字人将取代全球3亿人工岗位!

青否数字人

数字人

macos三国策略游戏:三国志11威力加强版最新中文版

胖墩儿不胖y

mac游戏 游戏推荐 好玩的游戏分享

重庆大学OpenHarmony技术俱乐部成立:产学研紧密合作,共创数智生态新篇章

科技热闻

Ulysses 27 for Mac(markdown编辑软件) v27.3中文完整激活版

mac

苹果mac Windows软件 Ulysses Markdown写作工具

原创逼真实时互动“青否数字人”是如何生产出来的?

青否数字人

数字人

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

西柚子

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

西柚子

如何提高3D渲染速度

3D建模设计

3D渲染 3D加载 3D模型加载速度 3D模型渲染效率

YouTube音乐转MP3转换器 MediaHuman YouTube to MP3 Converter 中文

mac大玩家j

Mac软件 音频格式转换器

【Mac/win】Topaz Gigapixel AI v6.3.3 绿色便携版 自带激活补丁

Rose

图片放大工具 Topaz Gigapixel AI便携版 Topaz Gigapixel AI教程

文字处理软件推荐 Mellel 6 激活中文版

胖墩儿不胖y

Mac软件 文字处理软件

数字人分身让企业更高效!

青否数字人

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