SpringBoot 项目 pom.xml 中 设置 Docker Maven 插件

在Spring Boot项目中,使用Docker Maven插件(通常是docker-maven-plugin或者fabric8io/docker-maven-plugin)来自动化构建Docker镜像并将其推送到远程仓库。

这里分别介绍这两种插件的基本配置,并说明如何设置远程仓库推送。

1、使用 docker-maven-plugin

docker-maven-plugin 插件实际上是由 spotify 提供的,而 spotify 官方已经停止了对这个插件的维护。

xml 复制代码
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>你的版本号</version>
    <configuration>
        <imageName>你的远程仓库地址/${project.artifactId}:${project.version}</imageName>
        <dockerDirectory>src/main/docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
        <execution>
            <id>push-image</id>
            <phase>deploy</phase>
            <goals>
                <goal>push</goal>
            </goals>
            <configuration>
                <serverId>docker-hub</serverId> <!-- 对应settings.xml中的server配置 -->
            </configuration>
        </execution>
    </executions>
</plugin>

注意serverId<configuration> 标签内用于指定Maven的 settings.xml 文件中配置的服务器认证信息,以便在推送镜像时进行认证。

2、使用 fabric8io/docker-maven-plugin

fabric8io/docker-maven-plugin 是另一个流行的Docker Maven插件,提供了更多的功能和更好的维护。

xml 复制代码
<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>你的版本号</version>
    <configuration>
        <images>
            <image>
                <name>你的远程仓库地址/${project.artifactId}:${project.version}</name>
                <build>
                    <contextDir>${project.basedir}/src/main/docker</contextDir>
                    <dockerFile>Dockerfile</dockerFile>
                    <assembly>
                        <descriptorRef>artifact</descriptorRef>
                    </assembly>
                </build>
            </image>
        </images>
        <pushImages>
            <pushImage>你的远程仓库地址/${project.artifactId}:${project.version}</pushImage>
        </pushImages>
    </configuration>
    <executions>
        <execution>
            <id>docker:build</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
        <execution>
            <id>docker:push</id>
            <phase>deploy</phase>
            <goals>
                <goal>push</goal>
            </goals>
            <configuration>
                <serverId>docker-hub</serverId> <!-- 同样需要配置在settings.xml -->
            </configuration>
        </execution>
    </executions>
</plugin>

3、配置 Maven 的 settings.xml

无论使用哪个插件,都需要在Maven的 settings.xml 文件中配置你的远程仓库认证信息。这个文件通常位于 ~/.m2/settings.xml

xml 复制代码
<servers>
    <server>
        <id>docker-hub</id>
        <username>你的用户名</username>
        <password>你的密码</password>
    </server>
</servers>
  • pom.xml 中配置插件,包括镜像名称、构建目录、执行阶段等。
  • 在Maven的 settings.xml 中配置远程仓库的认证信息。
  • 使用Maven命令(如mvn clean package docker)。
相关推荐
Monly215 小时前
RabbitMQ:生产者可靠性(生产者重连、生产者确认)
spring boot·rabbitmq·java-rabbitmq
ankleless6 小时前
Spring Boot 实战:从项目搭建到部署优化
java·spring boot·后端
城管不管6 小时前
Docker核心---数据卷(堵门秘籍)
运维·docker·容器
BestAns7 小时前
Docker+Jenkins 自定义镜像指南
docker
荔枝爱编程8 小时前
如何在 Docker 容器中使用 Arthas 监控 Java 应用
java·后端·docker
白露与泡影8 小时前
SpringBoot前后端token自动续期方案
spring boot·后端·状态模式
HONG_YANG9 小时前
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
docker
Peter·Pan爱编程10 小时前
Docker在Linux中安装与使用教程
linux·docker·eureka
还听珊瑚海吗11 小时前
基于WebSocket和SpringBoot聊天项目ChatterBox测试报告
spring boot·websocket·网络协议
Monly2111 小时前
RabbitMQ:SpringAMQP Topic Exchange(主题交换机)
spring boot·rabbitmq·java-rabbitmq