微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建基于另一个的paketo构建器

如何解决创建基于另一个的paketo构建器

Spring boot maven插件正在使用paketo构建器来构建映像。

gcr.io/paketo-buildpacks/builder:base-platform-api-0.3

我想做的是向此构建器正在执行的操作添加另一步。 我已经创建了自己的buildpack,并尝试创建包含基本buildpacks的构建器。

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。然后编辑/修改它,然后create a new builder。这可能很棘手,因为在我撰写本文时,builder.toml尚未发布在易于查找和复制的任何地方。

一种可能更接近您想要的替代方法是使用元CNB(元CNB是buildpack的集合)。如果您在builder.toml的buildpacks部分中引用了元CNB,它将提取所有引用的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,并使它在Java meta CNB之前运行。您也可以选择使其在Java meta CNB之后运行,甚至可以定义自定义订单,因为您可以在订单组中引用meta CNB版本所包含的buildpack id / buildpack版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。