Не удалось выполнить цель com.spotify: dockerfile-maven-plugin: 1.3.6: сборка на проекте 'foo': не удалось собрать образ: - PullRequest
0 голосов
/ 22 октября 2018

Мы работаем в небольшой команде из 4 человек.Мы используем докер для развертывания наших сервисов.Одним из сервисов является проект Java Boot Spring, который развертывается после создания образа Docker с помощью Maven.Для создания образа докера службы Spring Boot мы используем mvn clean package dockerfile:build.

Самое интересное, что у моих коллег нет проблем с созданием образа докера сервиса Spring Boot.И я получаю сообщение об ошибке maven:

[ERROR] Failed to execute goal com.spotify:dockerfile-maven-plugin:1.3.6:build (default-cli) on project 'foo': Could not build image: com.spotify.docker.client.shaded.com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.spotify.docker.client.messages.RegistryAuth: no String-argument constructor/factory method to deserialize from String value ('osxkeychain')

Я попытался удалить все репозитории maven из .m2/repository, перезапустить Docker и удалить все изображения.

Позже я попытался запустить mvn clean package dockerfile:buildв две отдельные команды:

  • mvn package, затем
  • mvn docker:build

mvn package пройдено и mvn docker:build не удалось с помощьюта же ошибка, что и выше.

версия Maven 3.5.4, версия Docker 18.06.1-ce, build e68fc7a, ОС: macOS mojave

Я даже пытался перезагрузить компьютер, надеясь, что он это исправит ...

Отредактировано: вот плагин maven pom dockerfile-maven-plugin

...
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.3.6</version>
    <configuration>
        <repository>${project.artifactId}</repository>
    </configuration>
</plugin>
...

Редактировать 2:

Полное сообщение об ошибке:

[ERROR] Failed to execute goal com.spotify:dockerfile-maven-plugin:1.3.6:build (default) on project spring-boot-service: Could not build image: com.spotify.docker.client.shaded.com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.spotify.docker.client.messages.RegistryAuth: no String-argument constructor/factory method to deserialize from String value ('swarm')
[ERROR]  at [Source: N/A; line: -1, column: -1] (through reference chain: java.util.LinkedHashMap["stackOrchestrator"])
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Редактировать 3:

docker-compose.yml

wrapper:
  image: spring-boot-service:latest
ports:
  - "8080:8080"
expose:
  - "8080"
links:
  - db
  - another-service

Решено:

В моем случае это была неверная версия dockerfile-maven-plugin.Я использовал 1.3.6, а 1.4.7 исправил проблему.

Благодаря Борис !

Обновление: еще одна вещь!

Убедитесь, что mvn имя сборки завершено правильно, например:

[INFO] Successfully built **spring-boot-service:0.0.1-SNAPSHOT**

И docker-compose.yml должны выглядеть так:

...
wrapper:
  image: **spring-boot-service:0.0.1-SNAPSHOT**
...

1 Ответ

0 голосов
/ 22 октября 2018

Вот конфигурация dockerfile-maven-plugin:

<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>dockerfile-maven-plugin</artifactId>
  <version>${dockerfile-maven-plugin.version}</version>
  <executions>
    <execution>
      <id>default</id>
      <goals>
        <goal>build</goal>
        <goal>push</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <repository>${project.artifactId}</repository>
    <tag>${project.version}</tag>
    <buildArgs>
      <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
    </buildArgs>
  </configuration>
</plugin>

ПРИМЕЧАНИЕ: используйте последнюю выпущенную версию 1.4.7

Это настраиваетплагин для создания и отправки вашего образа с помощью единственной команды :

$ mvn clean deploy

Если вы хотите только создать образ Docker, запустите:

$ mvn clean package
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...