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,請參閱下列主題

  • 瞭解如何在 Bake 中定義和使用目標
  • 若要查看可以為目標設定的所有屬性,請參閱Bake 檔案參考