瞭解如何在 Docker Compose 中使用配置檔案

透過配置檔案,您可以定義一組活動配置檔案,以便您的 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` 配置檔案未啟用,`test_lib` 和 `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`。