docker buildx bake
描述 | 从文件构建 |
---|---|
用法 | docker buildx bake [OPTIONS] [TARGET...] |
别名 | docker buildx f |
描述
Bake 是一个高级构建命令。每个指定的 target 作为构建的一部分并行运行。
阅读 使用 Bake 的高级构建选项 指南,了解编写 bake 文件的介绍。
注意
如果需要,
buildx bake
命令将来可能会收到向后不兼容的功能。我们正在寻求有关改进命令和进一步扩展功能的反馈。
选项
选项 | 默认值 | 描述 |
---|---|---|
--allow | 允许构建访问指定的资源 | |
--call | build | 设置评估构建的方法 (check , outline , targets ) |
--check | --call=check 的简写 | |
-f, --file | 构建定义文件 | |
--load | --set=*.output=type=docker 的简写 | |
--metadata-file | 将构建结果元数据写入文件 | |
--no-cache | 构建镜像时不使用缓存 | |
--print | 打印选项而不进行构建 | |
--progress | auto | 设置进度输出的类型 (auto , plain , tty , rawjson )。使用 plain 显示容器输出 |
--provenance | --set=*.attest=type=provenance 的简写 | |
--pull | 始终尝试拉取所有引用的镜像 | |
--push | --set=*.output=type=registry 的简写 | |
--sbom | --set=*.attest=type=sbom 的简写 | |
--set | 覆盖目标值 (例如,targetpattern.key=value ) |
示例
覆盖配置的构建器实例(--builder)
与 buildx --builder
相同。
调用前端方法(--call)
与 build --call
相同。
调用:检查(--check)
与 build --check
相同。
指定构建定义文件 (-f, --file)
使用-f
/ --file
选项指定要使用的构建定义文件。该文件可以是 HCL、JSON 或 Compose 文件。如果指定多个文件,则读取所有文件并将构建配置组合在一起。
您可以传递要构建的目标名称,以便仅构建特定目标。以下示例构建在docker-bake.dev.hcl
文件中定义的db
和webapp-release
目标。
# docker-bake.dev.hcl
group "default" {
targets = ["db", "webapp-dev"]
}
target "webapp-dev" {
dockerfile = "Dockerfile.webapp"
tags = ["docker.io/username/webapp"]
}
target "webapp-release" {
inherits = ["webapp-dev"]
platforms = ["linux/amd64", "linux/arm64"]
}
target "db" {
dockerfile = "Dockerfile.db"
tags = ["docker.io/username/db"]
}
$ docker buildx bake -f docker-bake.dev.hcl db webapp-release
有关更多详细信息,请参阅 Bake 文件参考。
将构建结果元数据写入文件(--metadata-file)
类似于 buildx build --metadata-file
,但会为每个目标写入结果映射,例如
# docker-bake.hcl
group "default" {
targets = ["db", "webapp-dev"]
}
target "db" {
dockerfile = "Dockerfile.db"
tags = ["docker.io/username/db"]
}
target "webapp-dev" {
dockerfile = "Dockerfile.webapp"
tags = ["docker.io/username/webapp"]
}
$ docker buildx bake --load --metadata-file metadata.json .
$ cat metadata.json
{
"buildx.build.warnings": {},
"db": {
"buildx.build.provenance": {},
"buildx.build.ref": "mybuilder/mybuilder0/0fjb6ubs52xx3vygf6fgdl611",
"containerimage.config.digest": "sha256:2937f66a9722f7f4a2df583de2f8cb97fc9196059a410e7f00072fc918930e66",
"containerimage.descriptor": {
"annotations": {
"config.digest": "sha256:2937f66a9722f7f4a2df583de2f8cb97fc9196059a410e7f00072fc918930e66",
"org.opencontainers.image.created": "2022-02-08T21:28:03Z"
},
"digest": "sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3",
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 506
},
"containerimage.digest": "sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3"
},
"webapp-dev": {
"buildx.build.provenance": {},
"buildx.build.ref": "mybuilder/mybuilder0/kamngmcgyzebqxwu98b4lfv3n",
"containerimage.config.digest": "sha256:9651cc2b3c508f697c9c43b67b64c8359c2865c019e680aac1c11f4b875b67e0",
"containerimage.descriptor": {
"annotations": {
"config.digest": "sha256:9651cc2b3c508f697c9c43b67b64c8359c2865c019e680aac1c11f4b875b67e0",
"org.opencontainers.image.created": "2022-02-08T21:28:15Z"
},
"digest": "sha256:6d9ac9237a84afe1516540f40a0fafdc86859b2141954b4d643af7066d598b74",
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 506
},
"containerimage.digest": "sha256:6d9ac9237a84afe1516540f40a0fafdc86859b2141954b4d643af7066d598b74"
}
}
注意
构建记录 来源 (
buildx.build.provenance
) 默认包含最小的来源。设置BUILDX_METADATA_PROVENANCE
环境变量以自定义此行为
min
设置最小来源(默认值)。max
设置完整来源。disabled
、false
或0
不设置任何来源。
注意
构建警告 (
buildx.build.warnings
) 默认不包含。将BUILDX_METADATA_WARNINGS
环境变量设置为1
或true
以包含它们。
构建镜像时不使用缓存(--no-cache)
与build --no-cache
相同。构建镜像时不使用缓存。
打印选项而不进行构建(--print)
以 JSON 格式打印想要构建的目标的结果选项,而不启动构建。
$ docker buildx bake -f docker-bake.hcl --print db
{
"group": {
"default": {
"targets": [
"db"
]
}
},
"target": {
"db": {
"context": "./",
"dockerfile": "Dockerfile",
"tags": [
"docker.io/tiborvass/db"
]
}
}
}
设置进度输出的类型(--progress)
与 build --progress
相同。
创建来源证明(--provenance)
与 build --provenance
相同。
始终尝试拉取较新版本的镜像(--pull)
与build --pull
相同。
创建 SBOM 证明(--sbom)
与 build --sbom
相同。
从命令行覆盖目标配置(--set)
--set targetpattern.key[.subkey]=value
从命令行覆盖目标配置。模式匹配语法在 https://golang.ac.cn/pkg/path/#Match中定义。
$ docker buildx bake --set target.args.mybuildarg=value
$ docker buildx bake --set target.platform=linux/arm64
$ docker buildx bake --set foo*.args.mybuildarg=value # overrides build arg for all targets starting with 'foo'
$ docker buildx bake --set *.platform=linux/arm64 # overrides platform for all targets
$ docker buildx bake --set foo*.no-cache # bypass caching only for targets starting with 'foo'
您可以覆盖以下字段
args
cache-from
cache-to
context
dockerfile
labels
load
no-cache
no-cache-filter
output
platform
pull
push
secrets
ssh
tags
target