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)。
相关推荐
spencer_tseng12 分钟前
Spring Boot 3.0+ jakarta.*
java·spring boot
香菜农民23 分钟前
域名证书管理
运维·docker
江湖有缘1 小时前
从零开始:基于Docker Compose的Kener监控面板部署全记录
运维·docker·容器
月光技术杂谈1 小时前
国内环境下安装 docker-ce 的完整步骤
运维·docker·容器
PRINT!1 小时前
个人财富全景管理系统 AssetMe【内容均为AI制作】
spring boot·信息可视化·ai编程
jay神2 小时前
基于SpringBoot的宠物生命周期信息管理系统
java·数据库·spring boot·后端·web开发·宠物·管理系统
万亿少女的梦1682 小时前
基于SpringBoot的在线考试管理系统设计与实现
java·spring boot·后端
leoZ2312 小时前
Linux 环境常用服务一键部署文档(Docker 版)
运维·docker·容器
追寻少年3 小时前
基于Kubeadm和Docker部署K8S高可用集群
docker·容器·kubernetes
下次再写3 小时前
【Redis实战】深入理解Redis缓存策略:从原理到Spring Boot实践
java·spring boot·redis·缓存穿透·缓存击穿·分布式缓存·缓存策略