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 檔案參考