Найти в Дзене
Oleg Nakrainikoff

Собираем spring-boot проект в docker image и helm chart с помощью maven

Всем привет! Сегодня продолжим развивать тему с docker-maven-plugin, начатую в статье https://skillbox.ru/media/code/praktika-docker-znakomimsya-s-dockermavenplugin/, и перейдем к сборке spring-boot проекта в docker image и helm chart. Cборка docker image Для начала, нам необходимо добавить в pom.xml отдельный профиль, который активируется по наличию проперти docker_host и включает плагин io.fabric8:docker-maven-plugin, добавив конфигурацию для созания нашего docker image: Обратите внимание на параметр name - благодаря плагину мы можем использовать название проекта и его версию в имени образа. Также добавляем запуск сборки в фазу install: Теперь, запустив mvn install -Ddocker_host=localhost вместе с spring-boot проектом также локально будет соберан docker image (см. docker image ls). Сборка helm chart Опустим разбор написания самого helm chart, он приветден в примере https://github.com/onakrainikoff/spring-boot-helm/tree/main/src/main/helm. Для сборки helm chart используем com.kiwigr
Оглавление

Всем привет!

Сегодня продолжим развивать тему с docker-maven-plugin, начатую в статье https://skillbox.ru/media/code/praktika-docker-znakomimsya-s-dockermavenplugin/, и перейдем к сборке spring-boot проекта в docker image и helm chart.

Cборка docker image

Для начала, нам необходимо добавить в pom.xml отдельный профиль, который активируется по наличию проперти docker_host и включает плагин io.fabric8:docker-maven-plugin, добавив конфигурацию для созания нашего docker image:

-2

Обратите внимание на параметр name - благодаря плагину мы можем использовать название проекта и его версию в имени образа.

Также добавляем запуск сборки в фазу install:

-3

Теперь, запустив mvn install -Ddocker_host=localhost вместе с spring-boot проектом также локально будет соберан docker image (см. docker image ls).

Сборка helm chart

Опустим разбор написания самого helm chart, он приветден в примере https://github.com/onakrainikoff/spring-boot-helm/tree/main/src/main/helm.

Для сборки helm chart используем com.kiwigrid:helm-maven-plugin, настроеный на запуск в фазу install:

-4

Как и в случае с docker image мы можем использовать версию проекта в качестве значений для chartVersion и appVersion.

Так же я предпочитаю настравать плагин так, что бы он скачивал helm, а не использовал пердустановленый локально. Для этого указываем helmDownloadUrl и useLocalHelmBinary, а также добавляем профиль для определения операционной системы:

-5

Теперь запустив mvn install -Ddocker_host=localhost вместе с spring-boot проектом и docker image также будет соберан helm chart.

Публикация docker image в registry

Для настройки публикации выполним слудующие шаги:

1. В конфигурацию docker-maven-plugin добавляем запуск публикации в фазу deploy:

-6

2. Добавляем настройки доступа к registry в settings.xml. Пример https://fabric8.io/guide/mavenDockerPush.html

3. Для сборки и публикации образа выполняет mvn deploy -Ddocker_host=localhost

Публикация helm chart

Плагин com.kiwigrid:helm-maven-plugin поддерживает публикацию в ChartMuseum, Artifactory и Nexus.

На github есть отличный пример конфигурации:

-7

После добавления конфигурации репозиториев, нам остается только подключить публикацию к нужной фазе в pom.xml:

-8

Ссылки

Документация docker-maven-plugin: https://dmp.fabric8.io/

Документация helm-maven-plugin: https://github.com/kokuwaio/helm-maven-plugin

Пример проекта, описанного в статье: https://github.com/onakrainikoff/spring-boot-helm

Также подписывайтесь на

мой telegram: https://t.me/onakrainikoff

мой github https://github.com/onakrainikoff

#java #Maven #docker #helm #docker-maven-plugin #helm-maven-plugin