片段
目錄
錨點使用 &
符號建立。符號後跟一個別名。您可以在後面的程式碼中使用 *
符號和該別名來引用錨點後面的值。請確保 &
和 *
字元以及後面的別名之間沒有空格。
您可以在單個 Compose 檔案中使用多個錨點和別名。
示例 1
volumes:
db-data: &default-volume
driver: default
metrics: *default-volume
在上面的示例中,default-volume
錨點基於 db-data
卷建立。它稍後由別名 *default-volume
重用以定義 metrics
卷。
錨點解析發生在 變數插值 之前,因此不能使用變數來設定錨點或別名。
示例 2
services:
first:
image: my-image:latest
environment: &env
- CONFIG_KEY
- EXAMPLE_KEY
- DEMO_VAR
second:
image: another-image:latest
environment: *env
如果您有一個要在多個服務中使用的錨點,請將其與 擴充套件 結合使用,以使您的 Compose 檔案更容易維護。
示例 3
您可能需要部分覆蓋值。Compose 遵循由 YAML 合併型別 概述的規則。
在以下示例中,metrics
卷規範使用別名來避免重複,但覆蓋了 name
屬性。
services:
backend:
image: example/database
volumes:
- db-data
- metrics
volumes:
db-data: &default-volume
driver: default
name: "data"
metrics:
<<: *default-volume
name: "metrics"
示例 4
您還可以擴充套件錨點以新增其他值。
services:
first:
image: my-image:latest
environment: &env
FOO: BAR
ZOT: QUIX
second:
image: another-image:latest
environment:
<<: *env
YET_ANOTHER: VARIABLE
注意
YAML 合併 僅適用於對映,不能用於序列。
在上面的示例中,環境變數必須使用 FOO: BAR
對映語法宣告,而序列語法 - FOO=BAR
僅在不涉及片段時有效。