型材

使用配置文件,您可以定义一组活动配置文件,以便您的 Compose 应用程序模型可以针对各种用途和环境进行调整。

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

当列出的服务均不与活动服务匹配时,Compose 将忽略该服务profiles,除非该服务是命令明确指定的目标。在这种情况下,其配置文件将添加到活动配置文件集中。

笔记

所有其他顶级元素不受其影响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,则模型包含 servicestest_lib和coverage_lib,以及web始终启用的 service 。
  • 如果启用配置文件debug,则模型包含web和debug_lib服务,但不包含test_lib和coverage_lib,因此该模型对于depends_on的约束无效debug_lib。
  • 如果启用了配置文件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再次无效,因为和没有 列出公共项。depends_ondebug_libdebug_libtest_libprofiles
  • 如果 Compose 作为debug_lib要运行的显式服务来执行并且test启用了配置文件,则配置文件debug将自动启用,并且服务将作为启动 services和test_lib的依赖项拉入。debug_libtest_lib

profiles了解如何在 Docker Compose中使用。