基于另一个创建 paketo 构建器
Create paketo builder based on another
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
另一个问题是,即使这样可行,我想我仍然必须指定 paketo:base 中的所有 order.group。
是否真的有一种方法可以在 paketo-buildpacks/builder 之外创建一个生成器,而无需深入了解内部发生的事情的细节?
目前,我认为没有办法“扩展”生成器。尽管要添加这样的功能,但有一个针对 buildpacks 规范的 Github 问题。 See here.
一个选项是为您希望扩展的构建器完全复制 builder.toml。然后 edit/modify 它和 create a new builder。这可能很棘手,因为 builder.toml 在我撰写本文时并未发布在任何易于查找和复制的地方。
另一种可能更接近您想要的方法是使用元 CNB(元 CNB 是构建包的集合)。如果您在 builder.toml 的构建包部分引用元 CNB,它将引入所有引用的构建包。然后您可以定义自己的自定义订单。
例如:
[[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"
此示例将添加 node-engine CNB 并使其 运行 在 Java 元 CNB 之前。您也可以在 Java 元 CNB 之后使其成为 运行,或者甚至定义自定义顺序,因为您可以在订单中引用您的元 CNB 版本包含的构建包 id/version团体。
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
另一个问题是,即使这样可行,我想我仍然必须指定 paketo:base 中的所有 order.group。
是否真的有一种方法可以在 paketo-buildpacks/builder 之外创建一个生成器,而无需深入了解内部发生的事情的细节?
目前,我认为没有办法“扩展”生成器。尽管要添加这样的功能,但有一个针对 buildpacks 规范的 Github 问题。 See here.
一个选项是为您希望扩展的构建器完全复制 builder.toml。然后 edit/modify 它和 create a new builder。这可能很棘手,因为 builder.toml 在我撰写本文时并未发布在任何易于查找和复制的地方。
另一种可能更接近您想要的方法是使用元 CNB(元 CNB 是构建包的集合)。如果您在 builder.toml 的构建包部分引用元 CNB,它将引入所有引用的构建包。然后您可以定义自己的自定义订单。
例如:
[[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"
此示例将添加 node-engine CNB 并使其 运行 在 Java 元 CNB 之前。您也可以在 Java 元 CNB 之后使其成为 运行,或者甚至定义自定义顺序,因为您可以在订单中引用您的元 CNB 版本包含的构建包 id/version团体。