Мы работаем в небольшой команде из 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**
...