Jib 1.0.0迎来通用版本——以前所未有的低门槛构建Java Docker镜像

栏目: Java · 发布时间: 5年前

内容简介:去年,我们开始着手帮助开发人员更轻松地实现Java应用程序的容器化转换。我们注意到,开发人员们在使用现有工具时往往面临诸多困难——例如构建速度太慢,Dockerfiles混合不堪,以及容器体积过大等等。为了改变上述状况,我们开发出了Jib。Jib是一款开源工具,能够非常轻松地与您的Java应用程序实现集成——您无需安装Docker、无需运行Docker守护程序,甚至不需要编写Dockerfile。只需要在Maven或者Gradle build当中使用这款插件并运行构建过程,一切即可迎刃而解。Jib能够利用既

去年,我们开始着手帮助开发人员更轻松地实现 Java 应用程序的容器化转换。我们注意到,开发人员们在使用现有 工具 时往往面临诸多困难——例如构建速度太慢,Dockerfiles混合不堪,以及容器体积过大等等。

为了改变上述状况,我们开发出了Jib。Jib是一款开源工具,能够非常轻松地与您的Java应用程序实现集成——您无需安装 Docker 、无需运行Docker守护程序,甚至不需要编写Dockerfile。只需要在Maven或者Gradle build当中使用这款插件并运行构建过程,一切即可迎刃而解。Jib能够利用既有构建信息快速且高效地自动与您的应用程序完成适配。在Jib的帮助下,构建Java容器如今就像打包JAR文件一样简单。

我们于去年公布了Jib的beta测试版本,从那时开始,我们陆续收到了来自社区的诸多反馈与贡献,这也帮助我们更好地实现了其容器化体验。今天,我们高兴地宣布Jib 1.0.0通用版本的正式来临,其已经做好充分的准备,能够满足生产环境对于稳定性的严格要求。

我们将在这篇文章当中对版本中的主要变更做出说明,具体包括对WAR项目的支持、与Skaffold的集成以及面向Java的全新容器构建库Jib Core。

Jib 1.0版本中包含哪些重点?

Docker化WAR项目

Java编写的Web应用程序通常会被打包成WAR文件。如今,Jib已经能够对WAR项目进行容器化,且完全无需额外配置。您只需要直接运行以下命令:

Maven:

$ mvn package jib:build

Gradle:

$ gradle jib

该容器中的默认应用服务器为Jetty,但您也可以对基础镜像以及appRoot进行配置调整,从而使用Tomcat等其它服务器选项:

Maven(pom.xml):

<configuration>

<from>

<image>tomcat:8.5-jre8-alpine</image>

</from>

<to>

<image>gcr.io/my-project/my-war-image</image>

</to>

<container>

<appRoot>/usr/local/tomcat/webapps/my-webapp</appRoot>

</container>

</configuration>

Gradle(build.gradle):

jib {

from.image = 'tomcat:8.5-jre8-alpine'

to.image = 'gcr.io/my-project/my-war-image'

container.appRoot = '/usr/local/tomcat/webapps/my-webapp'

} 

感兴趣的朋友请参阅 Docker化Maven WAR项目Docker化Gradle WAR项目 的相关说明。

在Kubernetes开发当中与Skaffold for Java相集成

Skaffold是一款用于在Kubernetes上实现持续开发的命令行工具。我们将Skaffold与Jib加以集成,旨在实现Kubernetes之上的无缝化开发体验。Jib现在已经可以作为Skaffold当中的builder选项。

要在您的Java项目当中开始使用Skaffold,您首先需要安装Skaffold并向项目当中添加skaffold.yaml文件:

skaffold.yaml:



apiVersion: skaffold/v1beta4

kind: Config

build:

artifacts:

- image: gcr.io/my-project/my-java-image

# Use this for a Maven project:

jibMaven: {}

# Use this for a Gradle project:

jibGradle: {} 

请确保您已经把Kubernetes清单存放在k8s/目录当中,且Container规范中的镜像引用匹配至gcr.io/my-project/my-java-image位置。请查阅Skaffold库作为 参考

接下来,您可以使用以下命令启动Skaffold的持续开发功能:

$ skaffold dev --trigger notify

Skaffold能够帮助您消除在进行每一项变更之后,对应用程序进行重新构建与重新部署所带来的一系列繁琐步骤。Skaffold会利用Jib对您的应用程序进行容器化转换,而后在检测到变更时将其部署至您的Kubernetes集群当中。现在,您将能够把精力集中到真正重要的工作——编写代码身上。

Jib Core:在Java中构建Docker镜像

Jib运行在我们自己用于构建容器镜像的通用库之上,我们将这套库以Jib Core的形式进行发布,同时进行了一系列API改进。现在,您可以将Jib作为Maven以及Gradle插件,从而在无需Docker守护程序的前提下面向任意应用程序利用Java进行容器构建。

要使用Jib Core,您需要在项目当中添加以下文件:

Maven(pom.xml):

<dependency>

<groupId>com.google.cloud.tools</groupId>

<artifactId>jib-core</artifactId>

<version>0.1.1</version>

</dependency>

Gradle(build.gradle):

dependencies {

implementation 'com.google.cloud.tools:jib-core:0.1.1'

} 

以下是构建一套简单Docker镜像的操作示例。其将以基础镜像为起点,添加单一层、设置入口点,而后使用几行代码将镜像推送至远端注册表当中:

Jib.from("busybox")

.addLayer(Arrays.asList(Paths.get("helloworld.sh")), AbsoluteUnixPath.get("/"))

.setEntrypoint("sh", "/helloworld.sh")

.containerize(

   Containerizer.to(RegistryImage.named("gcr.io/my-project/hello-from-jib")

                                 .addCredential("myusername", "mypassword")));

我们也鼓励大家利用Jib Core构建 属于自己的自定义容器化解决方案 。欢迎您在我们的 Gitter频道 上共享利用Jib Core构建的一切项目。另外,您也可以参考我们发布的Jib Core其它使用示例,例如 Gradle构建脚本

丰富的功能,加上仍然简单易行的窗口化操作体验

利用Jib对Java应用程序进行容器化转换仍然与以往一样简单易行。如果您使用的是Maven,只需要将这款插件添加至pom.xml当中:

<plugin>

<groupId>com.google.cloud.tools</groupId>

<artifactId>jib-maven-plugin</artifactId>

<version>1.0.0</version>

<configuration>

<to>

  <image>gcr.io/my-project/my-java-image</image>

</to>

</configuration>

</plugin>

要构建一套镜像并将其推送至容器注册表,您可使用以下命令:

$ mvn compile jib:build

或者使用以下命令面向Docker守护程序进行构建:

$ mvn compile jib:dockerBuild

您现在甚至可以在无需修改pom.xml文件的前提下实现应用程序容器化,具体操作如下:

$ mvn compile com.google.cloud.tools:jib-maven-plugin:1.0.0:build -Dimage=gcr.io/my-project/my-java-image

若需了解更多细节信息,请参阅Jib Maven快速入门。

当配合Gradle使用Jib时,您需要将该插件添加至build.gradle当中:

plugins {

id 'com.google.cloud.tools.jib' version '1.0.0'

}



jib.to.image = 'gcr.io/my-project/my-java-image'

在此之后,您可以利用以下命令将应用程序容器化至目标容器注册表:

$ gradle jib

或者使用以下命令将其容器化至Docker守护程序:

$ gradle jibDockerBuild

若需了解更多细节信息,请参阅 Jib Gradle快速入门

立即开始使用

我们希望Jib能够帮助每一位朋友简化并加快自己的Java开发进程。要开始使用Jib,请参阅我们的 示例 ;此外,您也可使用Codelabs将Spring Boot应用程序或者Micronaut应用程序部署至Kubernetes当中。Jib能够与大多数Docker注册表提供程序以及托管注册表相兼容;请尽情尝试,并通过github.com/GoogleContainerTools/jib与我们分享您的心得体会。感谢!

原文链接: Jib 1.0.0 is GA—building Java Docker images has never been easier


以上所述就是小编给大家介绍的《Jib 1.0.0迎来通用版本——以前所未有的低门槛构建Java Docker镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

思想的未来

思想的未来

(美)劳伦斯﹒莱斯格 / 李旭 / 中信出版社 / 2004-10 / 29.00元

因特网革命已到来,一些人说它已经过去,革命缘何而来?又缘何而去呢? 劳伦斯·莱斯格对因特网革命中为何会出现一种反革命的破坏性力量及后果做出了解释。创作之所以繁荣,是因为因特网保护了创新的公共资源。是因为因特网保护了创新的公共资源。因特网的独特设计营造出一个中立的平台。最广大范围的作者们可在此平台上进行试验。围绕此平台的法律架构对这一自由空间给予了保护,以使文化和信息——我们这个时代的......一起来看看 《思想的未来》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换