設定檔
目錄
使用設定檔,您可以定義一組啟用的設定檔,以便針對各種用途和環境調整 Compose 應用程式模型。
服務 頂層元素支援 profiles
屬性來定義已命名設定檔的清單。沒有 profiles
屬性的服務一律會啟用。
當列出的 profiles
都沒有符合啟用的設定檔時,Compose 會忽略服務,除非該服務是明確由指令指定。在這種情況下,其設定檔會新增到啟用的設定檔集中。
注意
所有其他頂層元素不受
profiles
影響,並且一律啟用。
對其他服務的參考(透過 links
、extends
或共用資源語法 service:xxx
)不會自動啟用原本會被啟用設定檔忽略的元件。Compose 反而會傳回錯誤。
說明範例
services:
web:
image: web_image
test_lib:
image: test_lib_image
profiles:
- test
coverage_lib:
image: coverage_lib_image
depends_on:
- test_lib
profiles:
- test
debug_lib:
image: debug_lib_image
depends_on:
- test_lib
profiles:
- debug
在上述範例中
- 如果 Compose 應用程式模型在沒有啟用任何設定檔的情況下進行剖析,則它只包含
web
服務。 - 如果啟用
test
設定檔,則模型包含test_lib
和coverage_lib
服務,以及一律啟用的web
服務。 - 如果啟用
debug
設定檔,則模型包含web
和debug_lib
服務,但不包含test_lib
和coverage_lib
,因此模型對於debug_lib
的depends_on
約束無效。 - 如果啟用
debug
和test
設定檔,則模型包含所有服務:web
、test_lib
、coverage_lib
和debug_lib
。 - 如果 Compose 是以
test_lib
作為要執行的明確服務來執行,則test_lib
和test
設定檔會啟用,即使未啟用test
設定檔也一樣。 - 如果 Compose 是以
coverage_lib
作為要執行的明確服務來執行,則服務coverage_lib
和設定檔test
會啟用,而test_lib
會被depends_on
約束引入。 - 如果 Compose 是以
debug_lib
作為要執行的明確服務來執行,則模型對於debug_lib
的depends_on
約束仍然無效,因為debug_lib
和test_lib
沒有列出共同的profiles
。 - 如果 Compose 是以
debug_lib
作為要執行的明確服務來執行,並且啟用設定檔test
,則會自動啟用設定檔debug
,並將服務test_lib
作為相依性引入,啟動debug_lib
和test_lib
服務。
瞭解如何在 Docker Compose 中使用 profiles
。