使用 Spring Boot Maven 插件构建具有自定义名称的 docker 镜像

ahm*_*dkh 1 spring pom.xml maven docker

在我的 pom.xml 文件中,我默认将 imageName 配置为项目名称:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-image</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <imageName>${project.name}</imageName>
                </configuration>
            </plugin>
        </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

当我跑步时mvn spring-boot:build-image,效果很好。

当我尝试使用 覆盖图像名称时mvn spring-boot:build-image -Dspring-boot.build-image.imageName=customname,我期望获得一个名为 的 docker 图像customname。我仍然得到项目名称。这意味着 Maven 插件仍在使用${project.name}.

是否以错误的方式使用该命令?

And*_*lov 5

在您的情况下,图像的名称始终来自插件配置<imageName>${project.name}</imageName>。如果您想支持指定目标映像名称的两个选项(即 maven 基本配置和 CLI),您可以利用 maven 属性,即:

<properties>
  <module.image.name>${project.name}</module.image.name>
</properties>


<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-image</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <imageName>${module.image.name}</imageName>
                </configuration>
            </plugin>
        </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

之后mvn spring-boot:build-imagemvn spring-boot:build-image -Dmodule.image.name=customname(注意系统属性的另一个名称)将按预期工作