設定頂層元素
目錄
設定允許服務調整其行為,而無需重建 Docker 映像。與磁碟區一樣,設定會以檔案的形式掛載到容器的檔案系統中。掛載點在容器內的位置預設為 Linux 容器中的 /<config-name>
和 Windows 容器中的 C:\<config-name>
。
服務只能在服務頂層元素中的 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
應用程式部署時,會將 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 檔案視為無效而拒絕。