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 的專案中看到它。
可以為目標設定的屬性與 `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),它提供 Linting、程式碼導航和漏洞掃描功能。
後續步驟
要了解有關使用 Bake 的更多資訊,請參閱以下主題: