容器的出现让Java开发人员比以往任何时候都更接近“编写一次,到处运行”的工作流程,但要对Java应用程序进行容器化并非易事:你必须编写Dockerfile,以root身份运行Docker守护进程,等待构建完成,最后将镜像推送到远程注册中心。但并非所有的Java开发人员都是容器专家,像以前那样只需要构建一个JAR包的日子已经结束了吗?
为了应对这一挑战,谷歌开源了一个Java容器化工具Jib,有了这个工具,Java开发人员可以使用他们熟悉的Java工具来构建容器。Jib是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写Dockerfile或安装Docker,而且可以直接集成到Maven和Gradle中——只需要将插件添加到构建中,就可以立即将Java应用程序容器化。
Docker构建流程:
Jib构建流程:
Jib利用了Docker镜像的分层机制,将其与构建系统集成,并通过以下方式优化Java容器镜像的构建:
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 。