Создайте конструктор пакето на основе другого

Плагин 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 в группах заказов.

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