使用 docker buildkit 的 go 客户端,如何添加入口点?
Using docker buildkit's go client, how do I add an entrypoint?
出于对构建的精确控制,我们直接使用新的构建工具包 (moby/buildkit)。所以没有 Dockerfile。
我们正在创建一个类似于此示例的脚本:https://github.com/moby/buildkit/blob/master/examples/buildkit0/buildkit.go
虽然它有效(很棒),但缺少文档。
如何添加入口点? (即默认命令 运行)
和
如何设置容器启动时的默认工作目录?
和
如何设置要公开的端口?
BuildKit 中的 LLB 层不处理图像。它是构建结果的一个特定导出器。如果您使用像 Dockerfile 这样的前端,它将为导出器准备一个图像配置并调用 LLB 构建。如果你直接使用 LLB,你还需要自己创建一个图像配置。如果你使用 buildctl
这看起来像 buildctl build --output 'type=docker,name=test,"containerimage.config={""Config"":{""Cmd"":[""bash""]}}"'
在 Go API 中,您可以使用 ExportEntry
https://godoc.org/github.com/moby/buildkit/client#ExportEntry attributes. The image format is documented at https://github.com/moby/moby/blob/master/image/spec/v1.2.md 传递它。
请注意,您不需要在图像配置中填写RootFS
。 BuildKit 会自动填写这个。更多背景信息 https://github.com/moby/buildkit/issues/1041
Tõni 的回答居然帮我解决了。我也在这里发布了一个如何做的例子。
config := Config{
Cmd: cmd,
WorkingDir: "/opt/company/bin",
ExposedPorts: map[string]struct{}{
"80/tcp": {},
"8232/tcp": {},
},
Env: []string{"PATH=/opt/company/bin:" + system.DefaultPathEnv},
}
imgConfig := ImgConfig{
Config: config,
}
configStr, _ := json.Marshal(imgConfig)
Exports: []client.ExportEntry{
{
Type: "image",
Attrs: map[string]string{
"name": manifest.Tag,
"push": "true",
"push-by-digest": "false",
"registry.insecure": strconv.FormatBool(insecureRegistry),
"containerimage.config": string(configStr),
},
},
},
出于对构建的精确控制,我们直接使用新的构建工具包 (moby/buildkit)。所以没有 Dockerfile。
我们正在创建一个类似于此示例的脚本:https://github.com/moby/buildkit/blob/master/examples/buildkit0/buildkit.go
虽然它有效(很棒),但缺少文档。
如何添加入口点? (即默认命令 运行)
和
如何设置容器启动时的默认工作目录?
和
如何设置要公开的端口?
BuildKit 中的 LLB 层不处理图像。它是构建结果的一个特定导出器。如果您使用像 Dockerfile 这样的前端,它将为导出器准备一个图像配置并调用 LLB 构建。如果你直接使用 LLB,你还需要自己创建一个图像配置。如果你使用 buildctl
这看起来像 buildctl build --output 'type=docker,name=test,"containerimage.config={""Config"":{""Cmd"":[""bash""]}}"'
在 Go API 中,您可以使用 ExportEntry
https://godoc.org/github.com/moby/buildkit/client#ExportEntry attributes. The image format is documented at https://github.com/moby/moby/blob/master/image/spec/v1.2.md 传递它。
请注意,您不需要在图像配置中填写RootFS
。 BuildKit 会自动填写这个。更多背景信息 https://github.com/moby/buildkit/issues/1041
Tõni 的回答居然帮我解决了。我也在这里发布了一个如何做的例子。
config := Config{
Cmd: cmd,
WorkingDir: "/opt/company/bin",
ExposedPorts: map[string]struct{}{
"80/tcp": {},
"8232/tcp": {},
},
Env: []string{"PATH=/opt/company/bin:" + system.DefaultPathEnv},
}
imgConfig := ImgConfig{
Config: config,
}
configStr, _ := json.Marshal(imgConfig)
Exports: []client.ExportEntry{
{
Type: "image",
Attrs: map[string]string{
"name": manifest.Tag,
"push": "true",
"push-by-digest": "false",
"registry.insecure": strconv.FormatBool(insecureRegistry),
"containerimage.config": string(configStr),
},
},
},