設定頂層元素

設定允許服務調整其行為,而無需重建 Docker 映像。與磁碟區一樣,設定會以檔案的形式掛載到容器的檔案系統中。掛載點在容器內的位置預設為 Linux 容器中的 /<config-name> 和 Windows 容器中的 C:\<config-name>

服務只能在服務頂層元素中的 configs 屬性明確授予時才能存取設定。

預設情況下,設定

  • 由執行容器指令的使用者所擁有,但可以透過服務設定覆蓋。
  • 具有全域可讀取權限(模式 0444),除非服務設定為覆蓋此權限。

頂層 configs 宣告定義或參考授予 Compose 應用程式中服務的設定資料。設定的來源是 fileexternal

  • file:使用指定路徑檔案的內容建立設定。
  • environment:使用環境變數的值建立設定內容。在 Docker Compose 版本 2.23.1 中引入。
  • content:使用內嵌值建立內容。在 Docker Compose 版本 2.23.1 中引入。
  • external:如果設定為 true,則 external 指定此設定已建立。Compose 不會嘗試建立它,如果它不存在,則會發生錯誤。
  • name:容器引擎中要查找的設定物件名稱。此欄位可用於參考包含特殊字元的設定。名稱會按原樣使用,不會加上專案名稱作為範圍。

範例 1

應用程式部署時,會將 httpd.conf 的內容註冊為設定資料,並建立 <專案名稱>_http_config

configs:
  http_config:
    file: ./httpd.conf

或者,可以將 http_config 宣告為外部設定。Compose 會查找 http_config,將設定資料公開給相關服務。

configs:
  http_config:
    external: true

範例 2

應用程式部署時,會將內嵌的內容註冊為設定資料,並建立 <專案名稱>_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 檔案視為無效而拒絕。