Использование встроенных в облако пакетов сборки с Spring Boot <2.3

Spring Boot 2.3 представил поддержку для создания оптимизированных образов Docker с помощью плагина Spring Boot maven/gradle. В spring-boot:build-image goal делает кучу вещей:

  • Создайте индекс слоев
  • Вызов пакета сборки Paketo
  • Создайте образ OCI
  • и т.п.

Есть ли способ воспроизвести эти шаги для модулей, использующих более старую версию Spring Boot? Еще лучше, можно ли эти шаги интегрировать непосредственно в сборку maven / gradle?

1 ответ

В качестве особенности многослойных банок (в т.ч. layers.idxгенерация файлов и поддержка плагинов spring-boot-maven для Cloud Native Buildpacks / Paketo.io) была представлена ​​в Spring Boot 2.3. Я бы сказал, что вы не можете понизить ее с помощью стандартных инструментов.

НО я думаю, вы могли бы попытаться сгенерировать layers.idxфайл самостоятельно - или даже выберите файл по умолчанию, поскольку макет вашего приложения может не так сильно измениться. Примером может быть (без SNAPSHOT зависимости):

- "dependencies":
  - "BOOT-INF/lib/"
- "spring-boot-loader":
  - "org/"
- "snapshot-dependencies":
- "application":
  - "BOOT-INF/classes/"
  - "BOOT-INF/classpath.idx"
  - "BOOT-INF/layers.idx"
  - "META-INF/"

Наличие этого файла на месте (означает его размещение в вашем targetпапка (возможно, вы могли бы автоматизировать это, например, с помощью простого плагина Maven)), CLI пакета должен иметь возможность забрать ее. Итак, установите пакет CLI и запустите сборку Paketo без использования spring-boot-maven-plugin себе вот так:

pack build yourAppNameHere --path . --builder paketobuildpacks/builder:base

Я сам на самом деле не пробовал этот подход - и, возможно, вы столкнетесь с проблемами, если структура каталогов сильно отличается в более старых версиях Spring Boot. Но я был бы признателен за отзывы!

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