Arrays 合并Yaml数组嵌套
这是Ben的文章的一点后续内容,尽管我在合并两个数组之后又向前迈出了一步,并继承了第三次 我正在创建一个Arrays 合并Yaml数组嵌套,arrays,dictionary,docker-compose,yaml,Arrays,Dictionary,Docker Compose,Yaml,这是Ben的文章的一点后续内容,尽管我在合并两个数组之后又向前迈出了一步,并继承了第三次 我正在创建一个docker compose.yml文件,并希望这样做锚和别名 x-template: base-template: &base-template environemt: FOO=BAR custom-template-1: &custom-template1 <<: *base-template environment+
docker compose.yml
文件,并希望这样做锚和别名
x-template:
base-template: &base-template
environemt:
FOO=BAR
custom-template-1: &custom-template1
<<: *base-template
environment+:
FOO2=BAR2
services:
service-1:
<<: *custom-template1
如果我没有在custom-tamplate-1:
级别上使用environment+:
,或者如果我在service-1:
级别上定义environment+:
,它就会工作
我希望结果是
services:
service-1:
environment:
FOO:BAR
FOO2:BAR2
有可能实现我想要的吗;医生:不可能
首先,您的docker compose中有拼写错误,请下次复制整个docker compose。以下是我的更正(我不想编辑您的问题)并扩展为可测试:
version: '2.4'
x-base-template: &base-template
image: alpine
command: env
environment:
- FOO=BAR
x-custom-template-1: &custom-template1
<<: *base-template
environment:
- FOO2=BAR2
services:
service-1:
<<: *custom-template1
我们正在使用的合并不支持嵌套合并。这意味着关键点要么从一个对象拾取,要么从另一个对象拾取,而不是组合。这是有意设计的,大多数时候都是良好的行为。可悲的是,没有yaml特性(据我所知)支持嵌套合并,所以对您的问题的简单回答是“不,这是不可能的”
旁注:GitLab试图用其专有的CI配置解决这个问题,该配置支持 基于键的反向深度合并
早就应该接受这个答案了。谢谢你的解释。
extends
是Docker,但在v3中被删除了。如果只是像这样重写,那么值得从命令行-e
,或者使用一个,无论哪一个涉及的键入最少。@NomasPrime>Docker,但是在v3中被删除了。但没有理由切换到v3,v2仍在开发中。更多信息请点击此处:
version: '2.4'
x-base-template: &base-template
image: alpine
command: env
environment:
- FOO=BAR
x-custom-template-1: &custom-template1
<<: *base-template
environment:
- FOO2=BAR2
services:
service-1:
<<: *custom-template1
version: '2.4'
x-base-environment: &base-environment
FOO: BAR
x-base-template: &base-template
image: alpine
command: env
environment: *base-environment # This is only necessary if you want variables in base-template
x-custom-template-1: &custom-template1
<<: *base-template
environment:
<<: *base-environment
FOO2: BAR2
services:
service-1:
<<: *custom-template1