配置頂層元素

配置允許服務調整其行為,而無需重新構建 Docker 映象。與卷一樣,配置作為檔案掛載到容器的檔案系統中。在 Linux 容器中,掛載點的預設位置是 `/`,在 Windows 容器中是 `C:\`。

服務只能在 `services` 頂層元素中的 `configs` 屬性顯式授予後才能訪問配置。

預設情況下,配置

  • 由執行容器命令的使用者擁有,但可以透過服務配置覆蓋。
  • 具有全域性可讀許可權(模式 0444),除非服務配置被覆蓋。

頂層 `configs` 宣告定義或引用授予 Compose 應用程式中服務配置資料。配置的來源是 `file` 或 `external`。

  • `file`:透過指定路徑的檔案內容建立配置。
  • `environment`:配置內容透過環境變數的值建立。在 Docker Compose 版本 2.23.1 中引入。
  • `content`:內容透過內聯值建立。在 Docker Compose 版本 2.23.1 中引入。
  • `external`:如果設定為 true,`external` 指定此配置已建立。Compose 不會嘗試建立它,如果它不存在,則會發生錯誤。
  • `name`:在容器引擎中查詢的配置物件的名稱。此欄位可用於引用包含特殊字元的配置。該名稱按原樣使用,並且**不會**與專案名稱進行範圍限定。

示例 1

當應用程式部署時,`<project_name>_http_config` 會透過將 `httpd.conf` 的內容註冊為配置資料來建立。

configs:
  http_config:
    file: ./httpd.conf

或者,`http_config` 可以宣告為外部。Compose 會查詢 `http_config` 以將配置資料公開給相關服務。

configs:
  http_config:
    external: true

示例 2

當應用程式部署時,`<project_name>_app_config` 會透過將內聯內容註冊為配置資料來建立。這意味著 Compose 在建立配置時會推斷變數,這允許您根據服務配置調整內容

configs:
  app_config:
    content: |
      debug=${DEBUG}
      spring.application.admin.enabled=${DEBUG}
      spring.application.name=${COMPOSE_PROJECT_NAME}

示例 3

外部配置查詢也可以透過指定 `name` 使用不同的鍵。

以下示例修改了前一個示例,以使用引數 `HTTP_CONFIG_KEY` 查詢配置。實際查詢鍵在部署時透過變數的 插值 設定,但作為硬編碼 ID `http_config` 暴露給容器。

configs:
  http_config:
    external: true
    name: "${HTTP_CONFIG_KEY}"

如果 `external` 設定為 `true`,則除 `name` 之外的所有其他屬性都無關緊要。如果 Compose 檢測到任何其他屬性,它將拒絕 Compose 檔案為無效。