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)。
相关推荐
WangMingHua1112 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
用户3169353811835 小时前
如何从零编写一个 Spring Boot Starter
spring boot
程序员晓琪1 天前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly1 天前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户3521802454752 天前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
用户3521802454755 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
昵称为空C5 天前
手撸一个动态 SQL 执行引擎:不重启服务,在线增删改查任意数据库
spring boot·后端