我想要做的是将我的环境特定调整分离到一个 override.yml 中,没有什么特别的......但是我的覆盖对于部署的每个服务都完全相同,我想避免必须为每个服务写出相同的覆盖单个服务(并在引入新服务时不断向覆盖添加新部分)。
相反,我想创建一个定义,表示“将此覆盖应用于每个服务”。 这样的概念是否已经存在而我可能会遗漏?
例子 ...
docker-compose.yml:
aservice:
image: whatever1
environment:
FOO: BAR
另一个 docker-compose.yml:
anotherservice:
image: whatever2
我的 docker-compose.override.yml:
<magickeyword>:
environment:
FLIBBLE: flobble
dns:
- server1
- server2
现在,部署的每个服务都将拥有 DNS server1 和 server2 以及环境变量 FLIBBLE。
我意识到如果所有服务都扩展相同的基本服务我可以做到这一点,因为我可以对其应用覆盖,但是无论如何要设置全局/默认覆盖而不使用通用扩展?
目前,我有一个 hack,它涉及对任何定义的服务生成覆盖扫描并即时生成覆盖文件,但这似乎是一个用例,我不能成为第一个遇到的人,所以想知道我是否刚刚错过了在 compose 中解决此问题的明显解决方案。
您可以在每个项目文件夹中有一个base.yml
文件,其中base
服务仅包含您的environment
密钥,然后让每个服务扩展base
服务。
鉴于extends:
在 3.x https://github.com/moby/moby/issues/31101 中被删除,这不再是一个好的解决方案
最有用的评论
@saml查看https://github.com/docker/compose/pull/5140