运行时与 JVM 优化

使用 Google Jib 构建高效分层容器镜像

本指南阐述如何使用 Google Jib 为 Vert.x 应用程序构建容器镜像。

与传统的 Dockerfile 构建不同,Jib 可以直接通过构建工具(Maven / Gradle)生成符合 OCI 规范的分层优化镜像,全程无需在本地运行 Docker 守护进程,也无需编写维护复杂的 Dockerfile。

此外,Jib 通过将应用程序清晰解耦为不同的独立层(依赖库层、资源文件层和类代码层),在代码发生变动时仅需重新构建并推送变动的代码层,从而成倍缩短容器构建与推送耗时。

你将构建什么

你将创建一个 Vert.x 应用程序,使用 Jib 插件为其构建分层容器镜像,并使用 Docker 启动运行该镜像。

前置要求

  • 文本编辑器或 IDE

  • Java 11 或更高版本

  • Docker 环境(仅用于在本地运行测试生成的镜像)

  • Maven 或 Gradle 构建工具

使用 Maven

生成工程项目

在 start.vertx.io 上配置项目,或直接在终端执行:

curl -G https://start.vertx.io/starter.zip -d "artifactId=layered-container-jib" -d "jdkVersion=11" -d "buildTool=maven" --output layered-container-jib.zip
unzip layered-container-jib.zip

配置 Jib 插件

打开 pom.xml,引入 jib-maven-plugin 配置:

构建容器镜像

直接将镜像构建并导入本地 Docker 守护进程:

./mvnw compile jib:dockerBuild

若需要直接构建并推送至远程镜像仓库(无需本地 Docker 守护进程):

./mvnw compile jib:build -Dimage=<my-registry>/<image-name>:<tag>

运行与测试

docker run -d -p 8080:8080 --name vertx-jib-app layered-container-jib
curl http://localhost:8080/

返回:Hello from Vert.x!。

使用 Gradle

对于 Gradle 用户,只需在 build.gradle.kts 中引入 com.google.cloud.tools.jib 插件:

然后执行:

./gradlew jibDockerBuild

总结

本文档展示了:

  • Google Jib 的免 Docker 守护进程分层构建优势;

  • 在 Maven 与 Gradle 中无缝集成 Jib 插件;

  • 构建毫秒级增量分层镜像并运行验证。