创建时间: | 2018/7/26 8:50 |
来源: | https://www.itcodemonkey.com/article/5916.html?from=timeline |
开源最前线(ID:OpenSourceTop) 猿妹编译
链接:https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html
谷歌云平台官方博客宣布发布了新的开源工具 Jib,一款快速而简单的容器镜像构建工具,能使容器技术和 Java 编程语言更加无缝地协同工作,使 Java 开发人员能更轻松地跨用例部署和控制 Java 应用程序。
在发布的博客文章中,Google 软件工程师 Appu Goundan 和 Qingyang Chen 对 Jib 进行了详细的介绍,以下为博客文章内容:
容器技术使得Java人员比以往都更接近“一次编写,随处运行”的工作流程,但要容器化Java应用程序却不是一件简单的事:你必须编写Dockerfile,以root身份运行Docker守护程序,等待构建完成,最后将镜像推送到远程注册表。并非所有Java开发人员都是容器专家;容器化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来容器化Java应用程序
Jib可作为Maven和Gradle的插件使用,并且需要最少的配置。只需将插件添加到构建定义中并配置目标镜像即可。如果要构建到私有注册表,请确保使用注册表配置Jib。最简单的方法是使用docker-credential-gcr之类的凭证助手。如果需要,Jib还提供了用于为Docker守护程序构建映像的其他规则。
Jib on Maven:
<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
Jib on Gradle:
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 使 Java 开发人员更容易使用容器,可以进一步扩展企业对容器技术的采用。Jib 可在绝大多数云厂商提供的云中使用。