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 表示相同的构建配置,可以使用
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"]
}
提示
想在 VS Code 中获得更好的 Bake 文件编辑体验?请查看Docker VS Code 扩展 (Beta),它提供 Linting、代码导航和漏洞扫描功能。
下一步
要了解有关使用 Bake 的更多信息,请参阅以下主题
- 了解如何在 Bake 中定义和使用目标 (targets)
- 要查看可为目标设置的所有属性,请参阅Bake 文件参考。