maven docker插件使用

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