个人资料
目录
通过配置文件,您可以定义一组活动配置文件,以便您的Compose应用程序模型适应各种用途和环境。
顶级元素
services 支持一个 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配置文件也会处于活动状态。 - 如果使用
coverage_lib作为显式服务来执行Compose,则服务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。