Bake简介
目录
Bake 是对 docker build 命令的抽象,它使您能够更轻松地以一致的方式管理构建配置(CLI 标志、环境变量等),方便团队中的每个人使用。
Bake 是集成到 Buildx CLI 中的命令,因此只要安装了 Buildx,您就可以通过 docker buildx bake 命令访问 bake。
使用 Bake 构建项目
这是一个简单的 docker build 命令示例:
$ docker build -f Dockerfile -t myapp:latest .
此命令在当前目录中构建 Dockerfile,并将生成的镜像标记为myapp:latest。
使用 Bake 表达相同的构建配置:
docker-bake.hcl
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
}Bake 提供了一种结构化的方式来管理您的构建配置,并且您无需每次都记住 docker build 的所有 CLI 标志。
有了这个文件,构建镜像就像运行一样简单:
$ docker buildx bake myapp
对于简单的构建,docker build 和 docker buildx bake 之间的差异很小。然而,随着构建配置变得越来越复杂,Bake 提供了一种更结构化的方式来管理这种复杂性,这很难通过 docker build 的 CLI 标志来管理。它还提供了一种在团队中共享构建配置的方式,以确保每个人都能以一致的方式使用相同的配置构建镜像。
Bake 文件格式
您可以使用 HCL、YAML(Docker Compose 文件)或 JSON 编写 Bake 文件。通常,HCL 是最具表现力和灵活性的格式,这也是为什么您会在本文档的大多数示例以及使用 Bake 的项目中看到它。
目标可以设置的属性与 docker build 的 CLI 标志非常相似。例如,考虑以下 docker build 命令:
$ docker build \
-f Dockerfile \
-t myapp:latest \
--build-arg foo=bar \
--no-cache \
--platform linux/amd64,linux/arm64 \
.
与 Bake 相当的是:
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
args = {
foo = "bar"
}
no-cache = true
platforms = ["linux/amd64", "linux/arm64"]
}后续步骤
要了解有关使用 Bake 的更多信息,请参阅以下主题: