1、父pom
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.45.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<!-- <executions>-->
<!-- 定义构建和推送步骤 -->
<!-- <execution>-->
<!-- <id>push-image</id>-->
<!-- <phase>package</phase>-->
<!-- <goals>-->
<!-- <goal>push</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- <execution>-->
<!-- <id>build-image</id>-->
<!-- <phase>install</phase>-->
<!-- <goals>-->
<!-- <goal>build</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!--全局配置-->
<configuration>
<!--配置远程docker守护进程url-->
<dockerHost>tcp://192.168.58.18:2375</dockerHost>
<verbose>true</verbose>
<authConfig>
<username>aolingo</username>
<password>你的密码</password>
</authConfig>
<!--镜像相关配置,支持多镜像-->
<images>
<!-- 单个镜像配置 -->
<image>
<!--镜像名(含版本号)-->
<name>aolingo/${project.name}:${project.version}</name>
<!--registry地址,用于推送,拉取镜像-->
<registry>harbor.aolingo.com</registry>
<!--镜像build相关配置-->
<build>
<!--使用dockerFile文件-->
<dockerFile>${project.basedir}/Dockerfile</dockerFile>
<tags>
<tag>latest</tag>
<tag>${project.version}</tag>
</tags>
</build>
</image>
</images>
<buildArgs>
<!-- dockerfile参数,指定jar路径 -->
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
2、子模块中的Dockerfile配置文件
FROM harbor.aolingo.com/openjdk/openjdk:22-jdk
# RUN addgroup -S aolingo && adduser -S aolingo -G aolingo
# USER aolingo:aolingo
WORKDIR /app
ARG JAR_FILE
#这里的环境变量,在上面docker插件中已经配置,见同样的红色字体部分
COPY ${JAR_FILE} app.jar
VOLUME /data/
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
3、编译命令
//构建镜像并推送
mvn clean package docker:push -Pdev -pl starchat-gateway
//构建镜像不推送
mvn clean package docker:build -Pdev -pl starchat-gateway