gpt4 book ai didi

Docker Compose 为 YAML 别名和 anchor 合并数组

转载 作者:行者123 更新时间:2023-12-02 18:13:15 26 4
gpt4 key购买 nike

我有以下损坏的 docker-compose 文件

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 -f test.yaml config
ERROR: yaml.constructor.ConstructorError: while constructing a mapping
in "./test.yaml", line 14, column 13
expected a mapping for merging, but found scalar
in "./test.yaml", line 4, column 7

问题 1: 如何合并 docker-compose 中的数组?我尝试使用的语法是用于合并字典的语法

问题2: 如果没有办法合并数组,是否有解决方法?

用例:我有多个服务,其中一些映射一些卷,其他映射其他卷,其他映射所有卷。我不想重复自己。

谢谢!

最佳答案

Yaml 合并语法用于合并映射,而不是用于数组。有关更多信息,请参阅 this issue 。但是,如果您只是添加单个卷,则不需要合并任何内容。只需将别名作为数组条目插入:

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 为 YAML 别名和 anchor 合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61178058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com