在docker-compose.yml中使用inheritance

我有很多服务,在docker-compose中使用相同的基本configuration。 实际上大部分的configuration都是一样的,只是做了一些小小的调整。

我已经看到,在YAML中inheritance值是可能的。 我可以在docker-compose中使用它来定义一个“默认服务”,并将其用于其他服务,例如docker-compose run ? 我将如何做到这一点?

不,你不能用YAML来做。 像YAML中的特性一样,唯一的inheritance是合并密钥语言独立types ,它只能用于一个YAML文档,而不是在同一个YAML文件中的多个文档之间(用---分隔),当然不在不同的YAML文件之间。

不过, docker-compose.yml docker-compose会读取docker-compose.yml ,如果可用docker-compose.override.yml (第二个文件中的值(如果有的话)会覆盖第一个文件中的值)。 结合-f选项为docker-compose指定inputYAML文件,可以使用具有不同覆盖的共享基本文件。

这是docker-compose一个特性,是在从YAML文件加载的数据上完成的,而不是通过组合YAML文件然后加载它们。