使用Docker Swarm,我将所有“替代”都保存在一个yml
文件中,如下所示:
docker stack -c base.yml -c overrides.yml deploy myStack
如果我的
base.yml
文件定义了serviceA
的这些部署限制:serviceA:
. . .
deploy:
resources:
limits: {memory: 1024M}
reservations: {memory: 1024M}
我可以轻松地在
overrides.yml
中覆盖:serviceA:
deploy:
resources:
limits: {memory: 2048M}
reservations: {memory: 2048M}
这样,随着产品的新版本发布,我的
base.yml
可以更改,但是任何替代都可以轻松地从旧版本传输到新版本。但是,如果我要删除或删除base.yml
中定义的内容怎么办?如果我想保留reservation
,但是通过使用第二个limits
文件删除yml
定义。有什么办法吗?目前,我使用的是Yaml 3.6版。这两个选项不起作用。这(不可解析):
serviceA:
deploy:
resources:
limits: {memory: }
reservations: {memory: 2048M}
这(使用
base.yml
中定义的默认值):serviceA:
deploy:
resources:
reservations: {memory: 2048M}
最佳答案
当使用多个docker-compose文件时,后一个文件将合并到前一个文件中。这意味着:您不能删除定义,只能修改现有定义或添加新定义(请参阅https://github.com/docker/compose/issues/3729)。一个PR允许创建并关闭它,而没有被合并。
因此,剩下的就是从limits
中删除base.yml
定义,并将其仅包含在overrides.yml
中。
关于docker - Docker:使用多个YAML文件时删除设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637072/