配置頂級元素

配置允許服務在不重建 Docker 映象的情況下調整其行為。與卷類似,配置被掛載為檔案到容器的檔案系統中。掛載點在容器中的位置預設為 Linux 容器中的 /<config-name> 和 Windows 容器中的 C:\<config-name>

服務只能在 services 頂級元素中透過明確授予的 configs 屬性訪問配置。

預設情況下,配置

  • 歸執行容器命令的使用者所有,但可以透過服務配置覆蓋。
  • 具有世界可讀許可權(模式 0444),除非服務配置為覆蓋此許可權。

頂級 configs 宣告定義或引用在 Compose 應用程式中授予服務配置資料。配置的來源是 fileexternal

  • 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 檔案,因為它無效。