docker-compose.yaml无法解析

时间:2019-04-05 18:31:29

标签: docker docker-compose yaml

我在运行docker-compose.yml时遇到麻烦。我从github页面检索了一个预制的docker-compose文件,并根据我的需要对其进行了自定义。尝试解析它时,它返回错误。

我对yaml语法不是很了解,所以我很难理解错误源于何处。

docker-compose.yml文件中的代码发布在此pastebin上:https://pastebin.com/XjM2S11i

解析时返回以下错误:

ERROR:

while parsing a block mapping
  in "<unicode string>", line 5, column 1:
    version: "3.6"
    ^
expected <block end>, but found '<block mapping start>'
  in "<unicode string>", line 149, column 3:
      watchtower:
      ^

有人可以帮助我修复语法/缩进吗?非常感谢。

2 个答案:

答案 0 :(得分:3)

文件中有第115行:

phpmyadmin:
    hostname: phpmyadmin

因此,根级映射的键phpmyadmin的值是一个映射本身,它以键hostname开头,该键缩进了四个位置。

然后在第149行上:

  watchtower:
    container_name: watchtower

仅缩进两个位置。您必须确定watchtower的父节点是什么:它是根级映射的键,然后需要向左刷新,或者是与{{1}相同的映射中的键}是一个关键,然后需要缩进四个位置。还是需要在hostname之前的根级别映射中插入密钥。

我强烈建议始终对映射值和序列项使用两个位置的数量缩进(这意味着对序列项指示符使用 no 偏移):

watchtower

您的docker-compose YAML文件是用于映射的至少2个和4个位置缩进以及针对序列项至少2个,3个和4个位置缩进的大杂烩。

该docker-compose没有抱怨:

a:
  b:
  - 1
  - 2

文件中的

仍然是意外的,因为它是无效的有效YAML。

答案 1 :(得分:0)

使用http://www.yamllint.com/,对docker-compose.yml进行'Lint'(语法检查),更正语法错误,然后重新运行Docker命令。