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 來表達相同的建構組態
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 的專案中看到它的原因。
目標 (target) 可設定的屬性與 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"]
}提示想要在 VS Code 中獲得更好的 Bake 檔案編輯體驗嗎?請查看 Docker VS Code 擴充功能 (Beta),它支援 Lint 檢查、程式碼導航以及漏洞掃描。
下一步
若要深入了解如何使用 Bake,請參閱以下主題
- 了解如何在 Bake 中定義與使用目標 (targets)
- 若要查看目標可設定的所有屬性,請參考 Bake 檔案參考。