程式碼片段

使用 Compose,您可以利用內建的 YAML範例 1

在上面的範例中,基於 db-data 磁碟區建立了一個 default-volume 錨點。稍後,別名 *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 僅在不涉及片段時才有效。