Ошибка при вставке в докер-хаб с помощью spotify/dockerfile-maven-plugin

У меня есть проект Maven, который построен как образ докера. Я использую https://github.com/spotify/dockerfile-maven для создания этого образа и автоматически включаю его в docker.hub mvn clean install, build фаза проходит без проблем. Но на push У меня есть эта ошибка:

[ERROR] denied: requested access to the resource is denied
[WARNING] An attempt failed, will retry 1 more times
org.apache.maven.plugin.MojoExecutionException: Could not push image
    at com.spotify.plugin.dockerfile.PushMojo.execute(PushMojo.java:90)
........
Caused by: com.spotify.docker.client.exceptions.DockerException: denied: requested access to the resource is denied
    at com.spotify.plugin.dockerfile.LoggingProgressHandler.handleError(LoggingProgressHandler.java:105)
    at com.spotify.plugin.dockerfile.LoggingProgressHandler.progress(LoggingProgressHandler.java:63)
......

Вот мой конфиг плагина:

     <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.3.6</version>
                    <configuration>
                        <repository>${docker.image.prefix}/${project.artifactId}-istio</repository>
                        <tag>latest</tag>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                                <goal>push</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

При нажатии с docker push image-name:tag все работает.

Здесь я нашел похожую проблему, но добавив зависимость для docker-client v8.8.4 ничего не меняет.

Также этот комментарий предлагает перейти на 1.3.3 версия, но это не работает для меня.

В обоих случаях я вижу в журналах, что он отправляет в один и тот же репозиторий:

The push refers to a repository [docker.io/my-login/my-image-name]

3 ответа

Добавлять <useMavenSettingsForAuth>true</useMavenSettingsForAuth> в тег конфигурации и укажите учетные данные вашего сервера в maven settings.xml как -

<server>
      <id>docker.io</id>
      <username>xxxxx</username>
      <password>xxxxxx</password>
    </server>

Вы создали идентификатор сервера в вашем ~/.m2/settings.xml файл?
Как здесь:

<servers>
  <server>
    <id>docker-hub</id>
    <username>your_docker_hub_username</username>
    <password>you_docker_hub_password</password>
    <configuration>
      <email>your_docker_hub_email@example.com</email>
    </configuration>
  </server>
</servers>

Затем вам нужно обратиться к нему в вашем pom.xml (serverId).

    <build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
            <!--related to creating image and pushing it to docker hub-->
                <imageName>${docker.image.prefix}/${project.artifactId}-istio</imageName>
                <imageTags>
                    <imageTag>latest</imageTag>
                </imageTags>
                <serverId>docker-hub</serverId>
                <registryUrl>https://index.docker.io/v1/</registryUrl>
            <!--end of related to creating image and pushing it to docker hub-->
            </configuration>
        </plugin>

Документацию относительно аутентификации можно найти здесь
я использую mvn clean install docker:build чтобы построить образ, но я думаю, что ваш подход с <executions>...</executions> должно работать тоже.
Дайте конфигурацию, которую я предоставил (и версию docker-maven-plugin), с предложенной командой mvn, и дайте мне знать, помогает ли это.

Я предполагаю, что вы не получаете сообщение об ошибке, в котором говорится, что ссылка на сервер docker.io не найдена, что означает, что ваши учетные данные settings.xml выбраны правильно. Возможно, ${docker.image.prefix} не является правильным именем пользователя hub.docker.com. Попробуйте жестко закодировать его и посмотреть, работает ли он.

Другие вопросы по тегам