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