docker - Docker:使用多个YAML文件时删除设置

标签 docker docker-swarm

使用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/

相关文章:

python - 我可以在docker上分发python应用程序吗?

visual-studio - 如何在 Docker 镜像中应用最新的 msbuild?

docker - 我没有在Divio项目中更改要求,那么为什么构建因依赖冲突而失败?

Docker 17.06-ce 对共享主机资源的默认容器内存限制

docker - 使用 API 从容器中获取 Swarm 节点 IP 地址?

docker - 连接两个 docker 容器

docker - 查询通过普罗米修斯节点导出器文本文件收集器公开的自定义指标失败

Swarm 模式下的 docker stats?

Docker swarm 容器连接问题

docker - Rancher 和其他容器编排的区别