fabric8 docker-maven-plugin:在构建时包含其他标记

时间:2017-06-14 21:16:42

标签: maven docker docker-maven-plugin

我在我的pom.xml中配置了fabric8 docker-maven-plugin,如下所示:

  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>io.fabric8</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>${docker.plugin.version}</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>build</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <images>
            <image>
              <name>${docker.image.prefix}/${project.artifactId}:%l</name>
              <build>
                <dockerFile>Dockerfile</dockerFile>
                <assembly>
                  <descriptorRef>artifact</descriptorRef>
                </assembly>
              </build>
            </image>
          </images>
        </configuration>
      </plugin>
      ...
    </plugins>
    ...
  </build>

我正在使用%l占位符,如果版本包含latest,则使用-SNAPSHOT标签标记图像,否则使用pom版本。 从CI构建时,我想在我的图像中添加一些额外的标签(可能多于一个)(例如内部版本号/分支名称),但我想保留%l占位符行为。 我认为应该可以在命令行中使用maven属性,但我无法从插件文档中找到它(https://dmp.fabric8.io/

如何在执行docker时包含其他标记:构建目标?

1 个答案:

答案 0 :(得分:3)

您可以使用<tags>标记:

https://dmp.fabric8.io/#build-configuration

<properties>
  ...
  <!-- set default -->
  <docker.image-tag>${project.version}</docker.image-tag>
  ...
</properties>


<image>
  ...
  <name>repo/something/%a:%l</name>
  <build>
    ...
    <tags>
      <tag>${docker.image-tag}</tag>
    </tags>
    ...
  </build>
  ...
</image>

这会使用%l行为和自定义集${docker.image-tag}标记您的图片。

mvn docker:build -Ddocker.image-tag=mytag