擴充功能
目錄
擴充功能可以讓您的 Compose 檔案更有效率且更容易維護。
使用前綴 `x-` 作為頂層元素,將您想要重複使用的設定模組化。 Compose 會忽略任何以 `x-` 開頭的欄位,這是 Compose 靜默忽略無法辨識欄位的唯一例外。
擴充功能也可以與錨點和別名一起使用。
它們也可以用於 Compose 檔案中任何不預期使用者自定義鍵的結構中。 Compose 使用這些來啟用實驗性功能,就像瀏覽器新增對 自定義 CSS 功能 的支援。
範例 1
x-custom:
foo:
- bar
- zot
services:
webapp:
image: example/webapp
x-foo: bar
service:
backend:
deploy:
placement:
x-aws-role: "arn:aws:iam::XXXXXXXXXXXX:role/foo"
x-aws-region: "eu-west-3"
x-azure-region: "france-central"
範例 2
x-env: &env
environment:
- CONFIG_KEY
- EXAMPLE_KEY
services:
first:
<<: *env
image: my-image:latest
second:
<<: *env
image: another-image:latest
在此範例中,環境變數不屬於任何一個服務。它們已被完全提取到 x-env
擴充欄位中。這定義了一個包含環境欄位的新節點。使用了 &env
YAML錨點,因此兩個服務都可以將擴充欄位的值引用元為 *env
。
範例 3
x-function: &function
labels:
function: "true"
depends_on:
- gateway
networks:
- functions
deploy:
placement:
constraints:
- 'node.platform.os == linux'
services:
# Node.js gives OS info about the node (Host)
nodeinfo:
<<: *function
image: functions/nodeinfo:latest
environment:
no_proxy: "gateway"
https_proxy: $https_proxy
# Uses `cat` to echo back response, fastest function to execute.
echoit:
<<: *function
image: functions/alpine:health
environment:
fprocess: "cat"
no_proxy: "gateway"
https_proxy: $https_proxy
nodeinfo
和 echoit
服務都透過 &function
錨點包含 x-function
擴充,然後設定它們各自的映像檔和環境。
範例 4
使用 YAML 合併 也可使用多個擴充,並針對特定需求共享和覆寫其他屬性。
x-environment: &default-environment
FOO: BAR
ZOT: QUIX
x-keys: &keys
KEY: VALUE
services:
frontend:
image: example/webapp
environment:
<< : [*default-environment, *keys]
YET_ANOTHER: VARIABLE
注意事項
YAML 合併 僅適用於映射,不能與序列一起使用。
在上面的例子中,環境變數使用
FOO: BAR
映射語法宣告,而序列語法- FOO=BAR
僅在不涉及片段時才有效。
參考歷史說明
本節僅提供參考資訊。在撰寫本文時,已知存在以下前綴
前綴 | 供應商/組織 |
---|---|
docker | Docker |
kubernetes | Kubernetes |
指定位元組值
值以 {數量}{位元組單位}
的格式將位元組值表示為字串:支援的單位為 b
(位元組)、k
或 kb
(千位元組)、m
或 mb
(百萬位元組)和 g
或 gb
(十億位元組)。
2b
1024kb
2048k
300m
1gb
指定持續時間
值以 {值}{單位}
的形式將持續時間表示為字串。支援的單位有 us
(微秒)、ms
(毫秒)、s
(秒)、m
(分鐘)和 h
(小時)。值可以組合多個值,無需分隔符號。
10ms
40s
1m30s
1h5m30s20ms