擴充套件
目錄
擴充套件可用於使您的 Compose 檔案更高效且更易於維護。
使用字首 x- 作為頂級元素來模組化您想要重用的配置。Compose 會忽略任何以 x- 開頭的欄位,這是 Compose 默默忽略無法識別的欄位的唯一例外。
擴充套件也可以與錨點和別名一起使用。
它們還可以用於 Compose 檔案中不預期使用者定義鍵的任何結構。Compose 使用它們來啟用實驗性功能,就像瀏覽器新增對自定義 CSS 功能的支援一樣。
示例 1
x-custom:
foo:
- bar
- zot
services:
webapp:
image: example/webapp
x-foo: barservice:
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_proxynodeinfo 和 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 |
指定位元組值
值以 {amount}{byte unit} 格式的字串表示位元組值:支援的單位有 b(位元組)、k 或 kb(千位元組)、m 或 mb(兆位元組)以及 g 或 gb(千兆位元組)。
2b
1024kb
2048k
300m
1gb指定持續時間
值以 {value}{unit} 形式的字串表示持續時間。支援的單位有 us(微秒)、ms(毫秒)、s(秒)、m(分鐘)和 h(小時)。值可以組合多個值而無需分隔符。
10ms
40s
1m30s
1h5m30s20ms