Создайте конструктор пакето на основе другого
Плагин Spring boot maven использует paketo builder для создания образов.
gcr.io/paketo-buildpacks/builder:base-platform-api-0.3
Что я хотел бы сделать, так это добавить еще один шаг к тому, что делает этот строитель. Я создал свой собственный пакет сборки и попытался создать сборщик с включенными базовыми пакетами сборки.
builder.toml
...
...
[[buildpacks]]
image = "my-own-buildpack"
[[buildpacks]]
image = "gcr.io/paketo-buildpacks/builder:base-platform-api-0.3"
...
Первая проблема, с которой я столкнулся, - это ошибка при попытке создать конструктор из builder.toml:
ERROR: failed to add buildpacks to builder: extracting buildpacks from gcr.io/paketo-buildpacks/builder:base-platform-api-0.3: could not find label io.buildpacks.buildpackage.metadata
Другая проблема заключается в том, что даже если это сработает, я думаю, мне все равно придется указывать все order.group из paketo: base.
Есть ли способ создать конструктор из пакетов paketo-buildpacks/builder, не вдаваясь в подробности того, что происходит внутри?
1 ответ
На данный момент я не верю, что есть способ "расширить" застройщика. Однако существует проблема Github со спецификацией пакетов сборки, чтобы добавить такую функцию. Смотрите здесь.
Один из вариантов - полностью скопировать builder.toml для построителя, который вы хотите расширить. Затем отредактируйте / измените его и создайте новый строитель. Это может быть сложно, поскольку на момент написания этой статьи файлы builder.toml не опубликованы в любом месте, где их легко найти и скопировать.
Одна альтернатива, которая, вероятно, в любом случае ближе к тому, что вы хотите, - использовать мета CNB (мета CNB - это набор пакетов сборки). Если вы укажете мета CNB в разделе buildpacks вашего builder.toml, он будет втягивать все связанные buildpacks. Затем вы можете определить свой собственный заказ.
Пример:
[[buildpacks]]
id = "paketo-buildpacks/node-engine"
image = "gcr.io/paketo-buildpacks/node-engine:0.1.1"
[[buildpacks]]
id = "paketo-buildpacks/java"
image = "gcr.io/paketo-buildpacks/java:3.1.0"
[[order]]
[[order.group]]
id = "paketo-buildpacks/node-engine"
version = "0.1.1"
[[order.group]]
id = "paketo-buildpacks/java"
version = "3.1.0"
[stack]
id = "io.buildpacks.stacks.bionic"
build-image = "gcr.io/paketo-buildpacks/build:base-cnb"
run-image = "gcr.io/paketo-buildpacks/run:base-cnb"
В этом примере будет добавлен узел CNB и он будет запускаться перед метаданным CNB Java. В качестве альтернативы вы можете запустить его после мета-CNB Java или даже определить собственный порядок, поскольку вы можете ссылаться на идентификатор / версию buildpack-пакетов, включенных в вашу версию мета-CNB в группах заказов.