docker-compose运行报yaml.parser.ParserError块集合解析错误如何解决
问题原因分析
- 核心错误原因:你的docker-compose.yaml中直接使用了
{{ 变量名 | 默认值 }}这类Jinja2模板语法,原生YAML解析器不支持该语法。{在YAML规则中是字典对象的起始标识,连续的{{会被解析器判定为块集合的开头,但后续内容不符合YAML字典的格式要求,就会触发你收到的「expected, but found ' '」报错,报错提示的第15行恰好是带有模板语法的volumes配置行,完全匹配问题特征。 - 次要格式问题:
labels配置项下的filebeat_enable:后面没有设置对应值,YAML规则不允许键值对的键后直接留空,也会引发解析异常。
解决办法
- 如果你是通过Ansible等支持Jinja2模板的自动化工具部署该文件,需要确认该文件是作为模板被渲染后再执行,不要直接用
docker compose命令运行原生模板文件。如果是手动直接运行compose,将模板变量替换为实际路径即可,示例修改如下:
volumes: - /usr/share/logData:/log - /opt/vr/demoproject/wms/input:/wms/input - /opt/vr/demoproject/wms/output:/wms/output
- 修正labels配置,给
filebeat_enable设置明确值,示例如下:
labels: filebeat_enable: "true"
- 配置修改完成后,可先自行校验YAML格式合法性,再执行容器启动命令。
内容的提问来源于stack exchange,提问作者user9214118
相关产品推荐
相关产品推荐

