我刚看到新的extension fields https://docs.docker.com/compose/compose-file/#extension-fields在 Docker Compose v3.4 中,并尝试将其与部分覆盖结合使用。
我的撰写文件如下所示:
version: '3.4'
x-environment:
&default-environment
- FOO=foo
- BAR=bar
services:
myservice:
[...]
environment:
<< : *default-environment
- BAZ=baz
当我尝试运行它时,我得到:
ERROR: yaml.parser.ParserError: while parsing a block mapping
expected <block end>, but found '-'
(对于我的行“")
有任何想法吗?
您正在尝试使用合并键 http://yaml.org/type/merge.html(为过时的 YAML 版本 1.1 指定)带有序列。这是行不通的,因为合并键不是新语法,而只是可以在映射中使用的特殊键。
当解析器解析内容时environment
,它首先看到这一行:
<< : *default-environment
该行包含一个隐式键,<<
,以及该键的值,*default-environment
。因此,解析器决定environment
是一个映射。
现在在下一行,解析器遇到-
,它是序列项的指示符。由于解析器当前正在解析映射,因此它无法处理序列项指示符,因此会因错误而停止。
请注意,合并键未针对当前 YAML 版本 1.2 定义,并且在即将推出的 1.3 版本中将明确弃用。因此,一般不鼓励使用它。此外,正如您发现的那样,无法将其与序列一起使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)