Fabric8 docker -maven-плагин не может установить ярлыки для изображения - PullRequest
3 голосов
/ 03 марта 2020

Используя следующий плагин

<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33</version

и используя следующую конфигурацию (просто разместив соответствующие биты здесь)

    <configuration>
      <verbose>build</verbose>
      <images>
        <image>
          <name>${container.imageNameWithTag}</name>
          <build>
            <labels>
              <dummy.label>dummyLabelValue</dummy.label>
            </labels>
            <contextDir>${project.basedir}/src/main/docker</contextDir>
           <assembly>some required assembly </assembly>
          </build>
         </image>
        </images>
    </configuration>

    <executions>
      <execution>
        <id>docker-build</id>
        <goals>
          <goal>build</goal>
        </goals>
        <phase>package</phase>
      </execution>
    </executions>

Но в конечном изображении есть только эти метки

        "Labels": {
            "org.label-schema.build-date": "20181204",
            "org.label-schema.license": "GPLv2",
            "org.label-schema.name": "CentOS Base Image",
            "org.label-schema.schema-version": "1.0",
            "org.label-schema.vendor": "CentOS"
        }

, которые я считаю, взяты из centos базового образа, но не dummy.label

Я пропустил какую-либо конфигурацию или что-то неправильно настроено?

Документация к плагину Maven Docker Плагин

1 Ответ

1 голос
/ 11 марта 2020

После изучения Конфигурация сборки , maven- docker -plugin, есть свойство buildOptions, которое также можно использовать.

buildOptions также заявляет

Эти параметры соответствуют параметрам, перечисленным в качестве параметров запроса в Docker Удаленный API

Параметры запроса в Docker Remote API имеет labels в качестве параметра.

метки: произвольные метки ключа / значения для установки на изображении в виде JSON карты пар строк.

Таким образом, мы должны указать строку JSON в опциях сборки, как показано ниже

<configuration>
          <verbose>build</verbose>
          <images>
            <image>
              <name>${container.nameWithTag}</name>
              <build>
                <contextDir>${project.basedir}/src/main/docker</contextDir>
                <buildOptions>

                  <labels>{
                    "org.label-schema.name":"${container.name}",
                    "org.label-schema.description":"My Image",
                    "org.label-schema.vcs-url":"${project.scm.url}",
                    "org.label-schema.vendor":"Test Vendor",
                    "org.label-schema.version":"${container.tag}"
                    }</labels>

                </buildOptions>
              </build>
            </image>
          </images>
        </configuration>
...