代码之家  ›  专栏  ›  技术社区  ›  Munchkin

docker扩展字段解析器错误

  •  5
  • Munchkin  · 技术社区  · 8 年前

    我刚看到新的 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 '-'
    

    (用于我的线路) <<:*默认环境 ")

    有什么想法吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   flyx    8 年前

    您正在尝试使用 merge key (针对过时的YAML版本1.1指定)带有序列。这是行不通的,因为合并键不是一种新语法,而只是一个可以在映射中使用的特殊键。

    当解析器解析 environment ,它首先看到这一行:

    << : *default-environment
    

    此行包含一个隐式键, << ,以及该键的值, *default-environment . 因此,解析器决定 环境 是一个映射。

    现在在下一行,解析器遇到一个 - ,它是序列项的指示器。由于解析器当前正在解析映射,因此无法处理序列项指示符,因此会因错误而停止。