1、docker buildx bake 简介
docker buildx bake
是一个高级的构建命令。每个指定的目标都将作为构建的一部分并行运行。每个目标都生成一个容器映像。目标尽可能并行运行,以最大限度地提高性能。目标也可以直接引用前任来创建顺序管道。
参考文档:https://docs.docker.com/engine/reference/commandline/buildx_bake/
2、docker buildx bake 语法
docker buildx bake [OPTIONS] [TARGET...]
3、docker buildx bake 命令
1)指定一个构建定义文件(-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
2)打印不构建的选项(--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"
]
}
}
}
3)从命令行覆盖目标配置。模式匹配语法定义在https://golang.org/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 # 覆盖所有以'foo'开头的目标的构建参数
docker buildx bake --set *.platform=linux/arm64 # 覆盖所有目标的平台
docker buildx bake --set foo*.no-cache # 仅对以'foo'开头的目标绕过缓存
可重写字段的完整列表:
- args
- cache-from
- cache-to
- context
- dockerfile
- labels
- no-cache
- no-cache-filter
- output
- platform
- pull
- push
- secrets
- ssh
- tags
- target
4、选项说明
名称, 缩写 | 默认 | 描述 |
--file,-f | 构建定义文件 | |
--load | --set=*.output=type=docker的缩写 | |
--metadata-file | 将构建结果元数据写入文件 | |
--no-cache | 在构建图像时不使用缓存 | |
打印选项而不构建 | ||
--progress | auto | 设置进度输出类型(auto、plain、tty)。使用plain来显示容器输出 |
--pull | 始终尝试提取所有引用的图像 | |
--push | --set=*.output=type=registry的简称 | |
--set | 覆盖目标值(例如,targetpattern.key=value) | |
--builder | 覆盖已配置的构builder实例 |
5、相关命令
命令 | 描述 |
docker buildx bake | 从文件构建 |
docker buildx build | 开始构建 |
docker buildx create | 创建一个新的builder实例 |
docker buildx du | 磁盘使用情况 |
docker buildx imagetools | 在registry中处理镜像的命令 |
docker buildx inspect | 查当前builder实例 |
docker buildx ls | 列出 builder 实现 |
docker buildx prune | 移除构建缓存 |
docker buildx rm | 删除 builder 实现 |
docker buildx stop | 停止 builder 实现 |
docker buildx use | 设置当前 builder 实例 |
docker buildx version | 显示buildx版本信息 |
6、父命令
命令 | 描述 |
Docker Buildx |