Использование встроенных в облако пакетов сборки с 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. Но я был бы признателен за отзывы!