烘焙目标

Bake 文件中的目标表示一次构建调用。它包含了您通常会使用标志传递给 docker build 命令的所有信息。

target "webapp" {
  dockerfile = "webapp.Dockerfile"
  tags = ["docker.io/username/webapp:latest"]
  context = "https://github.com/username/webapp"
}

要使用 Bake 构建目标,请将目标名称传递给 bake 命令。

$ docker buildx bake webapp

你可以通过向bake命令传递多个目标名称来一次构建多个目标。

$ docker buildx bake webapp api tests

默认目标

如果你在运行 docker buildx bake 时没有指定目标,Bake 将构建名为 default 的目标。

target "default" {
  dockerfile = "webapp.Dockerfile"
  tags = ["docker.io/username/webapp:latest"]
  context = "https://github.com/username/webapp"
}

要构建此目标,请在不带任何参数的情况下运行 docker buildx bake

$ docker buildx bake

目标属性

为目标设置的属性与CLI标志非常接近 docker build,还有一些特定于Bake的附加属性。

对于目标可以设置的所有属性,请参阅 烘焙参考

分组目标

你可以使用 group 块将目标分组。当你想要一次构建多个目标时,这非常有用。

group "all" {
  targets = ["webapp", "api", "tests"]
}

target "webapp" {
  dockerfile = "webapp.Dockerfile"
  tags = ["docker.io/username/webapp:latest"]
  context = "https://github.com/username/webapp"
}

target "api" {
  dockerfile = "api.Dockerfile"
  tags = ["docker.io/username/api:latest"]
  context = "https://github.com/username/api"
}

target "tests" {
  dockerfile = "tests.Dockerfile"
  contexts = {
    webapp = "target:webapp",
    api = "target:api",
  }
  output = ["type=local,dest=build/tests"]
  context = "."
}

要构建组中的所有目标,请将组的名称传递给 bake 命令。

$ docker buildx bake all

其他资源

请参阅以下页面以了解有关 Bake 功能的更多信息:

  • 了解如何在 Bake 中使用 变量 使您的构建配置更加灵活。
  • 了解如何使用矩阵构建具有不同配置的多个镜像,见 矩阵
  • 访问 Bake 文件参考 以了解 Bake 文件中可以设置的所有属性及其语法。