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 将是:

docker-bake.hcl
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 中定义和使用 目标
  • 要查看可为目标设置的所有属性,请参阅 Bake 文件参考
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.