Docker为YAML别名和锚点组合合并数组
我有以下损坏的docker compose文件Docker为YAML别名和锚点组合合并数组,docker,yaml,Docker,Yaml,我有以下损坏的docker compose文件 版本:“3.4” x-vols1:&vols-1 -/home/:/home/ x-vols2:&vols-2 -/tmp/:/tmp/ 服务: 附录1: 容器名称:app1 图片:app1 卷数: Yaml合并语法用于合并映射,而不是数组。有关更多信息,请参阅。但是,如果只是添加单个卷,则不需要合并任何内容。只需将别名作为数组项插入即可: version: '3.4' x-vols1: &vols-1 "/home/:/home
版本:“3.4”
x-vols1:&vols-1
-/home/:/home/
x-vols2:&vols-2
-/tmp/:/tmp/
服务:
附录1:
容器名称:app1
图片:app1
卷数:
Yaml合并语法用于合并映射,而不是数组。有关更多信息,请参阅。但是,如果只是添加单个卷,则不需要合并任何内容。只需将别名作为数组项插入即可:
version: '3.4'
x-vols1: &vols-1
"/home/:/home/"
x-vols2: &vols-2
"/tmp/:/tmp/"
services:
app1:
container_name: app1
image: app1
volumes:
- *vols-1
app2:
container_name: app2
image: app2
volumes:
- *vols-1
- *vols-2
通过使用多个docker compose
文件,每个卷一个,可以实现所需的行为。请注意,锚定和别名不是必需的,但要保持它们与问题对齐
base.yaml
版本:“3.4”
服务:
附录1:
容器名称:app1
图片:app1
附录2:
容器名称:app2
图片:app2
vol1.yaml
版本:“3.4”
x-vols1:&vols-1
卷数:
-/home/:/home/
服务:
附录1:
容器名称:app1
图片:app1
我建议您遵循KISS原则,不要在配置文件中开始编程。谢谢您的回答。我希望docker compose为数组合并添加了一些支持(对于,在本例中,您已从合并数组更改为合并映射。这不需要多个合成文件。这只是部分正确。递归合并映射,最终合并数组本身,这回答了问题。您仍然需要多个合成文件,否则,将继续合并映射。)e(单独使用yaml)将覆盖这些值。确实如此。看起来compose在合并方面比yaml做得更好。如果您开始变得太复杂,可能值得看看一些模板工具,如gomplate和jsonnet。