我有一个包含多个docker-compose
文件的复杂项目,根据我想要模拟的环境加载这些文件。
我希望看到与使用多个组合文件有关的文档。我觉得有些部分是加性的(ports
),而其他部分则遵循替换策略(environment
)。
我找不到这方面的文件。有关于这种行为的官方描述吗?
我可以准备一个简单的PoC来测试这一点,但我更愿意参考官方的解释,以避免达到错误的结论。
这是我能找到的全:
您可以提供多个-f配置文件。当您提供多个文件时,将它们组合成一个配置。按照提供文件的顺序编写构建配置。随后的文件覆盖并添加到它们的前身。
我读到“覆盖和添加他们的前辈”的意思是“一些部分添加,一些部分覆盖”。我想知道哪些是添加的,哪些是覆盖的。
发布于 2022-03-24 01:23:35
参见“扩展服务在撰写”页面中的“添加和重写配置”部分 (原文强调):
对于单值选项(如
image
、command
或mem_limit
),新值替换旧值. 对于多值选项ports
、expose
、external_links
、dns
、dns_search
和tmpfs
,组合两组值。 对于environment
、labels
、volumes
和devices
,请将“合并”条目与本地定义的优先值组合在一起。对于environment
和labels
,环境变量或标签名决定使用哪个值。volumes
和devices
的条目使用容器中的挂载路径进行合并。
该页还有几个例子。
这与您所观察到的行为相匹配:如果您有两个具有ports:
的文件,那么它们只是连接在一起,但是如果您有两个文件都有environment:
变量,那么每个变量的最后定义就会生效。
https://stackoverflow.com/questions/71598018
复制相似问题