curl -G https://start.vertx.io/starter.zip -d "artifactId=container-uber-jar" -d "jdkVersion=11" -d "buildTool=maven" --output container-uber-jar.zip
unzip container-uber-jar.zip
您将为打包为可执行 uber-jar 的 Vert.x 应用创建一个容器。
该操作指南包含几个文件
适用于 Maven 用户的 docker-maven/Dockerfile
,或
适用于 Gradle 用户的 docker-gradle/Dockerfile
。
文本编辑器或 IDE
Docker
首先,从 https://start.vertx.io 生成项目
选择 Maven
构建类型
将 artifactId
设置为 container-uber-jar
选择 JDK 11
JDK 版本
点击生成并将其内容提取到您磁盘上的某个位置
或者,打开终端并运行
curl -G https://start.vertx.io/starter.zip -d "artifactId=container-uber-jar" -d "jdkVersion=11" -d "buildTool=maven" --output container-uber-jar.zip
unzip container-uber-jar.zip
或者,使用 HTTPie
http https://start.vertx.io/starter.zip artifactId==container-uber-jar jdkVersion==11 buildTool==maven --output container-uber-jar.zip
unzip container-uber-jar.zip
在项目根目录下,创建一个 docker-maven/Dockerfile
构建文件
# 1st Docker build stage: build the project with Maven
FROM maven:3.9.9-eclipse-temurin-11 AS builder
WORKDIR /project
COPY . /project/
RUN mvn package -DskipTests -B
# 2nd Docker build stage: copy builder output and configure entry point
FROM eclipse-temurin:11
ENV APP_DIR=/application
ENV APP_FILE=container-uber-jar.jar
EXPOSE 8888
WORKDIR $APP_DIR
COPY --from=builder /project/target/*-fat.jar $APP_DIR/$APP_FILE
ENTRYPOINT ["sh", "-c"]
CMD ["exec java -jar $APP_FILE"]
Docker 构建包含两个阶段
在 maven:3.9.9-eclipse-temurin-11
容器中构建 Maven 项目
将构建输出复制到 eclipse-temurin:11
容器中并配置入口点
这种方法的好处是
可重现的构建:无论团队中谁运行 Docker 构建,它都将始终使用相同的 Maven 版本和 JDK 版本(在构建时和运行时)
小的容器镜像大小:最终容器将基于精简的 JDK 镜像,并且只会添加 uber-jar 文件
要构建容器,请在项目根目录下打开终端并运行
docker build -t com.example/container-uber-jar -f docker-maven/Dockerfile .
首先,从 https://start.vertx.io 生成项目
选择 Gradle
构建类型
将 artifactId
设置为 container-uber-jar
选择 JDK 11
JDK 版本
点击生成并将其内容提取到您磁盘上的某个位置
或者,打开终端并运行
curl -G https://start.vertx.io/starter.zip -d "artifactId=container-uber-jar" -d "jdkVersion=11" -d "buildTool=gradle" --output container-uber-jar.zip
unzip container-uber-jar.zip
或者,使用 HTTPie
http https://start.vertx.io/starter.zip artifactId==container-uber-jar jdkVersion==11 buildTool==gradle --output container-uber-jar.zip
unzip container-uber-jar.zip
在项目根目录下,创建一个 docker-gradle/Dockerfile
构建文件
# 1st Docker build stage: build the project with Gradle
FROM gradle:8.11.1-jdk11 AS builder
WORKDIR /project
COPY . /project/
RUN gradle assemble --no-daemon
# 2nd Docker build stage: copy builder output and configure entry point
FROM eclipse-temurin:11
ENV APP_DIR=/application
ENV APP_FILE=container-uber-jar.jar
EXPOSE 8888
WORKDIR $APP_DIR
COPY --from=builder /project/build/libs/*-fat.jar $APP_DIR/$APP_FILE
ENTRYPOINT ["sh", "-c"]
CMD ["exec java -jar $APP_FILE"]
Docker 构建包含两个阶段
在 gradle:8.1.1-jdk11
容器中构建 Gradle 项目
将构建输出复制到 eclipse-temurin:11
容器中并配置入口点
这种方法的好处是
可重现的构建:无论团队中谁运行 Docker 构建,它都将始终使用相同的 Gradle 版本和 JDK 版本(在构建时和运行时)
小的容器镜像大小:最终容器将基于精简的 JDK 镜像,并且只会添加 uber-jar 文件
要构建容器,请在项目根目录下打开终端并运行
docker build -t com.example/container-uber-jar -f docker-gradle/Dockerfile .
现在您已经构建了容器镜像,是时候尝试一下了!
打开终端并运行
docker run -p 8888:8888 com.example/container-uber-jar
您应该在控制台输出中看到类似这样的消息
HTTP server started on port 8888 Dec 02, 2024 5:17:19 PM io.vertx.launcher.application.VertxApplication INFO: Succeeded in deploying verticle
然后浏览到 https://:8888,从容器中运行的 Vert.x 应用获取您的问候!
本文档涵盖了
为 Maven 用户配置 Docker 构建,
为 Gradle 用户配置 Docker 构建。
最后发布于:2025-02-03 00:38:56 +0000。