个人资料

目录

通过配置文件,您可以定义一组活动配置文件,以便您的Compose应用程序模型适应各种用途和环境。

顶级元素 services 支持一个 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,模型将包含webdebug_lib服务,但不包含test_libcoverage_lib, 因此,模型在debug_libdepends_on约束方面是无效的。
  • 如果启用了配置文件 debugtest,模型包含所有服务;webtest_libcoverage_libdebug_lib
  • 如果Compose以test_lib作为显式服务运行,即使未启用test配置文件,test_libtest配置文件也会处于活动状态。
  • 如果使用coverage_lib作为显式服务来执行Compose,则服务coverage_lib和配置文件test处于活动状态,并且test_lib通过depends_on约束被拉入。
  • 如果Compose以debug_lib作为显式服务运行,那么模型在debug_libdepends_on约束方面再次无效,因为debug_libtest_lib没有列出共同的profiles
  • 如果Compose以debug_lib作为显式服务执行并且启用了配置文件test,则自动启用配置文件debug,并将服务test_lib作为依赖项引入,从而启动debug_libtest_lib两个服务。

了解如何在Docker Compose中使用profiles