“写一次,就可以在任何地方运行”(WORA),有时甚至是“写一次,就可以在任何地方运行”(WORE),一直是座右铭,它描述了Java语言在跨时代的优势以及容器使Java开发人员比以往更加紧密来实现这种类型的工作流程。
不要误会我的意思。 容器化Java应用程序绝非易事,这是创建Jib的主要推动力。
由Google创建的Jib是开源Java容器化程序,它使Java开发人员可以使用他们熟悉的Java工具来构建容器。 它为您的Java应用程序构建Docker和OCI映像,并且可以作为Maven和Gradle的插件使用。
创建Jib是为了处理将应用程序打包到容器映像中的所有步骤,它不需要您编写Dockerfile或安装docker,因为它直接集成到Maven和Gradle中。
让我们看一下与Docker相比构建流程的可视化表示:
Docker构建流程:
臂架构建流程:
Jib创作的目标有三个:
- 快速 - Swift部署您的更改。 Jib将您的应用程序分成多个层,从而将依赖项与类分开。 现在,您不必等待Docker重建整个Java应用程序-只需部署已更改的层。
- 具有可复制性 –用相同的内容重建容器映像始终会生成相同的映像。 永远不要再次触发不必要的更新。
- 无守护程序 –减少CLI依赖性。 从Maven或Gradle内部构建Docker映像,然后推送到您选择的任何注册表。 无需再编写Dockerfile并调用docker build / push。
您问它如何运作?
根据其GitHub repo的说法,传统上将Java应用程序与应用程序JAR一起构建为单个图像层,“ Jib的构建策略将Java应用程序分为多层,以实现更细化的增量构建。 更改代码时,仅重建更改,而不重建整个应用程序。 默认情况下,这些图层位于不易破坏的基础映像之上。”
如果您还有其他问题或评论,例如“但是,我不是Java开发人员”或“我只想在运行映像时设置一些JVM标志”,请确保查看“ FAQ”部分。
入门
您可以将Jib添加为Maven和Gradle的插件,并且需要的配置最少。 只需将插件添加到您的构建定义并配置目标映像即可。
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-maven-plugin文档。
摇篮摇臂
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-gradle-plugin文档。
但是,必须记住,如果要构建私有注册表,则应确保为Jib配置注册表的凭据 。