配置文件

目录

使用配置文件,您可以定义一组活动配置文件,以便您的 Compose 应用程序模型根据不同的用法和环境进行调整。

服务 顶层元素支持 profiles 属性,用于定义命名的配置文件列表。没有 profiles 属性的服务始终处于启用状态。

如果列出的 profiles 中没有一个与活动配置文件匹配,Compose 将忽略服务,除非服务由命令明确指定为目标。在这种情况下,服务的配置文件将添加到活动配置文件集中。

注意

所有其他顶层元素不受 profiles 影响,始终处于活动状态。

对其他服务的引用(通过 linksextends 或共享资源语法 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_libcoverage_lib,以及始终启用的服务 web
  • 如果启用 `debug` 配置文件,模型将包含 `web` 和 `debug_lib` 服务,但不包含 `test_lib` 和 `coverage_lib` 服务,因此模型在 `debug_lib` 的 `depends_on` 约束方面无效。
  • 如果启用 `debug` 和 `test` 配置文件,模型将包含所有服务:`web`、`test_lib`、`coverage_lib` 和 `debug_lib`。
  • 如果使用 `test_lib` 作为显式运行的服务执行 Compose,即使未启用 `test` 配置文件,`test_lib` 和 `test` 配置文件也将处于活动状态。
  • 如果使用 `coverage_lib` 作为显式运行的服务执行 Compose,服务 `coverage_lib` 和配置文件 `test` 将处于活动状态,`test_lib` 将由 `depends_on` 约束拉入。
  • 如果使用 `debug_lib` 作为显式运行的服务执行 Compose,由于 `debug_lib` 和 `test_lib` 没有共同列出的配置文件,因此模型在 `debug_lib` 的 `depends_on` 约束方面再次无效。
  • 如果使用 `debug_lib` 作为显式运行的服务执行 Compose,并且启用了 `test` 配置文件,则会自动启用 `debug` 配置文件,并将服务 `test_lib` 拉入作为依赖项,从而启动 `debug_lib` 和 `test_lib` 服务。

查看如何在 Docker Compose 中使用配置文件。