docker - Docker:使用多个 YAML 文件时删除设置
问题描述
使用 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
删除定义。有没有办法做到这一点?目前,我使用的是 yaml 版本 3.6。limits
yml
这两个选项不起作用。这(不可解析):
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
.
推荐阅读
- installation - 'node-sass' 不是内部或外部命令、可运行程序或批处理文件
- vue-chartjs - vue-chartjs 和自定义图例使用 generateLegend()
- r - R. 为数据框中的行范围分配颜色,生成 PCA 点图
- c++ - C++编辑删除类的函数
- kubernetes - 为什么我不能将服务类型 ClusterIP 附加到 GKE 上的 Ingress?
- php - href 中的 url 将 localhost 与域名混合
- python - 检查组合不在列表中
- tensorflow - 保存包含通用句编码器作为其嵌入的模型
- java - Android:未解决的依赖关系
- django - 查看 Django 表单提交是否来自管理员