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

问题描述 投票:0回答:1

在我的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>

当我运行

mvn spring-boot:build-image
时,效果很好。

当我尝试使用

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

命令使用方式错误吗?

spring docker maven pom.xml
1个回答
2
投票

在您的情况下,图像的名称始终来自插件配置

<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>

之后

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

© www.soinside.com 2019 - 2024. All rights reserved.