相关疑难解决方法(0)

是否有YAML语法用于共享列表或地图的一部分?

所以,我知道我可以这样做:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist: *sites
Run Code Online (Sandbox Code Playgroud)

并拥有sitelistanotherlist都包含www.foo.comwww.bar.com.不过,我真正想要的是anotherlist包含www.baz.com,而无需重复www.foo.comwww.baz.com.

这样做会在YAML解析器中出现语法错误:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist: *sites
  - www.baz.com
Run Code Online (Sandbox Code Playgroud)

只使用锚和别名,似乎不可能做我想要的而不添加另一级子结构,例如:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist:
  - *sites
  - www.baz.com
Run Code Online (Sandbox Code Playgroud)

这意味着此YAML文件的使用者必须了解它.

有一种纯粹的YAML方式做这样的事情吗?或者我是否必须使用一些后YAML处理,例如实现变量替换或自动提升某些类型的子结构?我已经在进行那种后处理来处理其他一些用例,所以我并不完全厌恶它.但我的YAML文件将由人类编写,而不是由机器生成,因此我希望尽量减少用户在标准YAML语法之上需要记忆的规则数量.

我也希望能够用地图做类似的事情:

namedsites: &sites
  Foo: www.foo.com
  Bar: www.bar.com

moresites: *sites
  Baz: www.baz.com
Run Code Online (Sandbox Code Playgroud)

我有一个搜索YAML规范,但找不到任何东西,所以我怀疑答案只是"不,你不能这样做".但是,如果有人有任何想法会很棒.


编辑:由于没有答案,我假设没有人发现我在YAML规范中没有的任何东西,并且这不能在YAML层完成.所以我打开了一个问题,想要对YAML进行后处理以帮助解决这个问题,以防将来有人发现这个问题.

arrays dictionary yaml cross-reference

81
推荐指数
5
解决办法
5万
查看次数

Docker-compose:如何在版本 3 中执行版本 2“mem_limit”?

最近,我尝试将版本2 docker-compose yaml文件升级到 version 3。具体来说,我是从 2.1 到 3.4。使用docker-compose版本 1.18.0 和docker版本 18.06.01。

docker-compose由于版本 2 选项的存在,第一次尝试导致中止:mem_limit。阅读这些第 3 版文档,它清楚地指出mem_limit已被删除并查看“升级”以指导使用远离此选项。这些说明告诉您使用deploy带有resources. 对docker-compose.yml文件进行这些更改,系统会正常启动。

不幸的是,我错过了那里的免责声明,它指出deploydocker-compose! 我的问题:有没有办法在使用 Compose 文件参考 3 的docker-compose同时仍然强制执行容器内存限制?

docker docker-compose

3
推荐指数
1
解决办法
2302
查看次数