1. 使用 jib-maven-plugin
(推荐)
Jib
是 Google 提供的插件,可以不用 Dockerfile 直接构建镜像,速度快,还支持多阶段构建。
配置
在 pom.xml
添加:
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<to>
<image>your-dockerhub-username/your-app:latest</image>
</to>
</configuration>
</plugin>
</plugins>
</build>
构建 Docker 镜像
mvn compile jib:dockerBuild
或者直接推送到 Docker Hub:
mvn compile jib:build
2. 使用 dockerfile-maven-plugin
(适用于已有 Dockerfile)
如果你已经有 Dockerfile
,可以使用 spotify/dockerfile-maven-plugin
。
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<configuration>
<repository>your-dockerhub-username/your-app</repository>
<tag>latest</tag>
<buildArgs>
<JAR_FILE>target/your-app.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
构建 Docker 镜像
mvn package dockerfile:build
3. 使用 fabric8-maven-plugin
(更强大但配置复杂)
如果你需要更丰富的 Docker/Kubernetes 支持,可以使用 fabric8-maven-plugin
。
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<version>7.3.0</version>
<executions>
<execution>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
构建镜像
mvn package fabric8:build
总结
如果是 新项目,推荐使用 Jib,配置简单,效率高。
如果 已有 Dockerfile,用 dockerfile-maven-plugin
更方便。