了解如何在 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`。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.