docker buildx bake
說明 | 從檔案建置 |
---|---|
用法 | docker buildx bake [選項] [目標...] |
別名 | docker buildx f |
說明
Bake 是一個高階建置指令。每個指定的目標都會作為建置的一部分並行執行。
閱讀使用 Bake 的高階建置選項指南,以了解如何撰寫 bake 檔案。
注意
未來如有需要,`buildx bake` 指令可能會收到不相容的回溯功能。 我們正在尋求有關改進指令和進一步擴展功能的回饋。
選項
選項 | 預設值 | 說明 |
---|---|---|
--allow | 允許建置存取指定的資源 | |
--call | 建置 | 設定評估建置的方法 (check 、outline 、targets ) |
--check | --call=check 的簡寫 | |
-f, --file | 建置定義檔案 | |
--load | --set=*.output=type=docker 的簡寫 | |
--metadata-file | 將建置結果中繼資料寫入檔案 | |
--no-cache | 建置映像檔時不使用快取 | |
--print | 列印選項而不建置 | |
--progress | auto | 設定進度輸出的類型 (auto 、plain 、tty 、rawjson )。使用 plain 來顯示容器輸出 |
--provenance | --set=*.attest=type=provenance 的簡寫 | |
--pull | 永遠嘗試提取所有參考的映像檔 | |
--push | --set=*.output=type=registry 的簡寫 | |
--sbom | --set=*.attest=type=sbom 的簡寫 | |
--set | 覆寫目標值(例如,targetpattern.key=value ) |
範例
覆寫已設定的建置器執行個體 (--builder)
與 buildx --builder
相同。
叫用前端方法 (--call)
與 build --call
相同。
呼叫:check (--check)
與 build --check
相同。
指定建置定義檔案 (-f, --file)
使用 -f
/ --file
選項來指定要使用的建置定義檔案。該檔案可以是 HCL、JSON 或 Compose 檔案。如果指定多個檔案,則會讀取所有檔案並合併建置設定。
您可以傳遞要建置的目標名稱,以僅建置特定目標。以下範例建置在 docker-bake.dev.hcl
檔案中定義的 db
和 webapp-release
目標
# docker-bake.dev.hcl
group "default" {
targets = ["db", "webapp-dev"]
}
target "webapp-dev" {
dockerfile = "Dockerfile.webapp"
tags = ["docker.io/username/webapp"]
}
target "webapp-release" {
inherits = ["webapp-dev"]
platforms = ["linux/amd64", "linux/arm64"]
}
target "db" {
dockerfile = "Dockerfile.db"
tags = ["docker.io/username/db"]
}
$ docker buildx bake -f docker-bake.dev.hcl db webapp-release
有關更多詳細資訊,請參閱 Bake 檔案參考。
將建置結果中繼資料寫入檔案 (--metadata-file)
類似於 buildx build --metadata-file
,但會寫入每個目標的結果映射,例如
# docker-bake.hcl
group "default" {
targets = ["db", "webapp-dev"]
}
target "db" {
dockerfile = "Dockerfile.db"
tags = ["docker.io/username/db"]
}
target "webapp-dev" {
dockerfile = "Dockerfile.webapp"
tags = ["docker.io/username/webapp"]
}
$ docker buildx bake --load --metadata-file metadata.json .
$ cat metadata.json
{
"buildx.build.warnings": {},
"db": {
"buildx.build.provenance": {},
"buildx.build.ref": "mybuilder/mybuilder0/0fjb6ubs52xx3vygf6fgdl611",
"containerimage.config.digest": "sha256:2937f66a9722f7f4a2df583de2f8cb97fc9196059a410e7f00072fc918930e66",
"containerimage.descriptor": {
"annotations": {
"config.digest": "sha256:2937f66a9722f7f4a2df583de2f8cb97fc9196059a410e7f00072fc918930e66",
"org.opencontainers.image.created": "2022-02-08T21:28:03Z"
},
"digest": "sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3",
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 506
},
"containerimage.digest": "sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3"
},
"webapp-dev": {
"buildx.build.provenance": {},
"buildx.build.ref": "mybuilder/mybuilder0/kamngmcgyzebqxwu98b4lfv3n",
"containerimage.config.digest": "sha256:9651cc2b3c508f697c9c43b67b64c8359c2865c019e680aac1c11f4b875b67e0",
"containerimage.descriptor": {
"annotations": {
"config.digest": "sha256:9651cc2b3c508f697c9c43b67b64c8359c2865c019e680aac1c11f4b875b67e0",
"org.opencontainers.image.created": "2022-02-08T21:28:15Z"
},
"digest": "sha256:6d9ac9237a84afe1516540f40a0fafdc86859b2141954b4d643af7066d598b74",
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 506
},
"containerimage.digest": "sha256:6d9ac9237a84afe1516540f40a0fafdc86859b2141954b4d643af7066d598b74"
}
}
注意
建置記錄來源 (
buildx.build.provenance
) 預設包含最少的來源。設定BUILDX_METADATA_PROVENANCE
環境變數來自訂此行為
min
設定最少的來源(預設)。max
設定完整的來源。disabled
、false
或0
不設定任何來源。
注意
建置警告 (
buildx.build.warnings
) 預設不包含在內。將BUILDX_METADATA_WARNINGS
環境變數設定為1
或true
以包含它們。
建置映像檔時不使用快取 (--no-cache)
與 build --no-cache
相同。建置映像檔時不使用快取。
列印選項而不建置 (--print)
以 JSON 格式列印要建置之目標的結果選項,而不開始建置。
$ docker buildx bake -f docker-bake.hcl --print db
{
"group": {
"default": {
"targets": [
"db"
]
}
},
"target": {
"db": {
"context": "./",
"dockerfile": "Dockerfile",
"tags": [
"docker.io/tiborvass/db"
]
}
}
}
設定進度輸出的類型 (--progress)
與 build --progress
相同。
建立來源證明 (--provenance)
與 build --provenance
相同。
永遠嘗試提取較新版本的映像檔 (--pull)
與 build --pull
相同。
建立 SBOM 證明 (--sbom)
與 build --sbom
相同。
從命令列覆寫目標設定 (--set)
--set targetpattern.key[.subkey]=value
從命令列覆寫目標設定。模式匹配語法定義於 https://go.dev.org.tw/pkg/path/#Match。
$ docker buildx bake --set target.args.mybuildarg=value
$ docker buildx bake --set target.platform=linux/arm64
$ docker buildx bake --set foo*.args.mybuildarg=value # overrides build arg for all targets starting with 'foo'
$ docker buildx bake --set *.platform=linux/arm64 # overrides platform for all targets
$ docker buildx bake --set foo*.no-cache # bypass caching only for targets starting with 'foo'
您可以覆寫以下欄位
args(參數)
cache-from(快取來源)
cache-to(快取目標)
context(上下文)
dockerfile(Dockerfile)
labels(標籤)
load(載入)
no-cache(不使用快取)
no-cache-filter(快取過濾器)
output(輸出)
platform(平台)
pull(提取)
push(推送)
secrets(機密)
ssh(SSH)
tags(標籤)
target(目標)