Docker Compose报错yaml第9行未找到预期标签URI如何解决?
错误触发原因
yaml: line 9: did not find expected tag URI 报错的本质是YAML解析器将内容中以感叹号!开头的片段识别为YAML自定义标签,但未找到对应的标签定义,最终解析失败。
结合你提供的配置,该报错有两个常见触发点:
- 第9行的
SYMFONY_VERSION: ${SYMFONY_VERSION:-}:如果你本地.env文件中未配置SYMFONY_VERSION变量,解析后该字段值为空,部分旧版本Docker Compose的YAML解析器会将空值结合语法符号误判为标签结构,触发报错。 - 配置中
MERCURE_JWT_SECRET: ${CADDY_MERCURE_JWT_SECRET:-!ChangeMe!}:默认值!ChangeMe!以!开头,未被引号包裹时,YAML会将!ChangeMe识别为自定义标签URI,与预期的字符串值冲突,触发解析错误。
修复方案
按顺序执行以下操作即可解决:
- 处理感叹号开头的默认值:将
!ChangeMe!用单引号包裹,修改对应行内容为:
MERCURE_JWT_SECRET: ${CADDY_MERCURE_JWT_SECRET:-'!ChangeMe!'}
- 修正空默认值的写法:将SYMFONY_VERSION的空默认值显式标注为字符串,修改第9行内容为:
SYMFONY_VERSION: ${SYMFONY_VERSION:-''}
- 排查缩进问题:确认第9行及相邻行的缩进统一使用2个空格,不要使用Tab按键,也不要出现缩进层级错乱的问题。
- 验证配置合法性:修改完成后执行
docker compose config命令检查配置是否可以正常解析,无输出报错即说明修复完成。
内容的提问来源于stack exchange,提问作者nemoxi
相关产品推荐
相关产品推荐

