型材

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

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

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

笔记

所有其他顶级元素不受其影响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,则模型包含 servicestest_libcoverage_lib,以及web始终启用的 service 。
  • 如果启用配置文件debug,则模型包含webdebug_lib服务,但不包含test_libcoverage_lib,因此该模型对于depends_on的约束无效debug_lib
  • 如果启用了配置文件debugtest,则模型包含所有服务;webtest_libcoverage_libdebug_lib
  • 如果 Compose 作为test_lib要运行的显式服务来执行,test_libtest即使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中使用。