使用多个CoMpose文件使您可以针对不同的环境或不同的工作流程自定义CoMpose应用程序。
默认情况下,CoMpose读取两个文件,一个dockeR-coMpose.yMl和一个可选 dockeR-coMpose.OVeRRide.yMl文件。按照约定,dockeR-coMpose.yMl 包含您的基本配置。顾名思义,替代文件可以包含现有服务或全新服务的配置替代。
如果在两个文件中都定义了服务,则CoMpose使用添加和覆盖配置中描述的规则合并 配置。
要使用多个替代文件或具有不同名称的替代文件,可以使用该-f选项指定文件列表。CoMpose按照在命令行上指定的顺序合并文件。有关使用的更多信息,请参见 dockeR-coMpose命令参考-f。
使用多个配置文件时,必须确保文件中的所有路径都相对于基本的CoMpose文件(用指定的第一个CoMpose文件-f)。这是必需的,因为替代文件不一定是有效的撰写文件。替代文件可以包含一些小的配置片段。跟踪服务的哪个片段相对于哪个路径是困难且令人困惑的,因此为了使路径更易于理解,必须相对于基本文件定义所有路径。
用例示例
在本节中,有两个常见的用例,用于多个CoMpose文件:针对不同的环境更改CoMpose应用程序,以及针对CoMpose应用程序运行管理任务。
不同的环境
多个文件的常见用例是将开发CoMpose应用程序更改为生产环境(可能是生产,演示或CI)。为了支持这些差异,您可以将CoMpose配置拆分为几个不同的文件:
从定义服务规范配置的基本文件开始。
dockeR-coMpose.yMl
web:
image: example/My_web_app:latest
depends_on:
– db
– cache
db:
image: postgRes:latest
cache:
image: Redis:latest
在此示例中,开发配置将一些端口暴露给主机,将我们的代码作为卷安装,并构建Web映像。
dockeR-coMpose.OVeRRide.yMl
web:
build: .
voluMes:
– ”’.:/code””
poRts:
– 8883:80
enviRonMent:
DEbug: ””tRue””
db:
command: ””-d””
poRts:
– 5432:5432
cache:
poRts:
– 6379:6379
运行时,dockeR-coMpose up它会自动读取覆盖。
现在,很高兴在生产环境中使用此CoMpose应用程序。因此,请创建另一个替代文件(该文件可以存储在其他Git Repo中,也可以由其他团队进行管理)。
dockeR-coMpose.Prod.yMl
web:
poRts:
– 80:80
enviRonMent:
ProDUCTION: ””tRue””
cache:
enviRonMent:
TTL: ””500””
要使用此生产CoMpose文件进行部署,您可以运行
dockeR-coMpose -f dockeR-coMpose.yMl -f dockeR-coMpose.Prod.yMl up -d
该部署使用配置中的所有三个服务 dockeR-coMpose.yMl和dockeR-coMpose.Prod.yMl(但不是在开发配置dockeR-coMpose.OVeRRide.yMl)。
有关生产中撰写的更多信息,请参见生产。
行政任务
另一个常见用例是针对CoMpose应用程序中的一个或多个服务运行临时任务或管理任务。本示例演示了如何运行数据库备份。
从dockeR-coMpose.yMl开始。
web:
image: example/My_web_app:latest
depends_on:
– db
db:
image: postgRes:latest
在dockeR-coMpose.adMin.yMl中添加新服务以运行数据库导出或备份。
dbadMin:
build: database_adMin/
depends_on:
– db
要开始正常的环境运行dockeR-coMpose up -d。要运行数据库备份,请同时包含dockeR-coMpose.adMin.yMl。
dockeR-coMpose -f dockeR-coMpose.yMl -f dockeR-coMpose.adMin.yMl
Run dbadMin db-backup