Docker compose docker扩展字段分析器错误

Docker compose docker扩展字段分析器错误,docker-compose,yaml,Docker Compose,Yaml,我刚刚在Docker Compose v3.4中看到了新版本,并尝试将其与部分重写结合使用 我的撰写文件如下所示: version: '3.4' x-environment: &default-environment - FOO=foo - BAR=bar services: myservice: [...] environment: << : *default-environment - BAZ=baz 版本:“

我刚刚在Docker Compose v3.4中看到了新版本,并尝试将其与部分重写结合使用

我的撰写文件如下所示:

version: '3.4'

x-environment:
  &default-environment
  - FOO=foo
  - BAR=bar

services:
  myservice:
    [...]
    environment:
      << : *default-environment
      - BAZ=baz
版本:“3.4”
x环境:
&默认环境
-FOO=FOO
-巴
服务:
我的服务:
[...]
环境:
您正在尝试将(为过时的YAML版本1.1指定的)与序列一起使用。这无法工作,因为合并键不是一种新语法,而只是一个可以在映射中使用的特殊键

当解析器解析
环境的内容时,它首先看到这一行:

<< : *default-environment

谢谢!我为这种特殊情况找到了一个解决方法:我使用带有
env_文件的merge键:
(其中我定义了FOO和BAR),然后,在我的实际服务中,我使用
环境:
(其中我定义了BAZ)。//当merge key被弃用时,在较新的版本中如何做这种事情?@Munchkin第一个答案是,在YAML中不做这种事情,因为YAML是一种序列化语言,而不是编程语言。第二个答案是,我们正在开发一个可选的“转换扩展”,它可能会作为规范与YAML 1.3一起发布,并且能够做到这一点(也可以使用序列)以及其他一些经常被问到的事情。谢谢,我明白了,我的问题是关于“合并键”的正确用法(使用映射):当它很快被弃用时,它将如何被替换?你说替换(转换扩展)只可能在1.3中发布?因此,我可能无法再合并映射了?这难道不是降级吗?因为合并键从来都不是规范本身的一部分,所以它始终只是一个建议,而且定义很差(无法指定与显式标记的交互)。这也有点违反了YAML的标记映射到数据结构的概念(它映射到处理指令).出于这些原因,我们不鼓励其实现和使用。转换扩展不被视为替代,而是在YAML中进行数据转换的一种适当方式,以前从未被视为该语言的一部分。目前,我们正在进行原型设计,以检查其是否可行。我们的推理是1.“这是一个bad idea和本不应被定义,因此我们宣布它为不推荐的,以阻止其实现”。2。但它表明了人们对此类功能的真正渴望,因此让我们尝试将其适当地包含在语言中“如果我们的测试成功,我们将与YAML 1.3一起发布。如果不成功,我们将保持“这不应成为语言的一部分”的立场。”。
<< : *default-environment