Docker Compose启动报ScannerError:condition配置引发问题咨询
Docker Compose YAML扫描错误原因解析
核心问题:版本兼容性与语法不匹配
你遇到的yaml.scanner.ScannerError错误,本质是两个原因叠加导致的:
Compose版本不支持条件依赖语法
你配置里写的condition: service_completed_successfully是Compose Specification(即弃用version字段后的最新规范)或version: "3.8"及以上版本才支持的特性。而你用的是version: "3",这个旧版本的Compose语法里,depends_on只允许单纯的服务名称列表,不支持嵌套的条件配置,解析器根本识别不了这个语法,所以直接抛出扫描错误。YAML结构被解析器误判
在旧版本语法下,你写的:depends_on: - metrics condition: service_completed_successfully会被YAML解析器当成“列表项里嵌套了一个映射”,但旧版
depends_on不允许这种结构,于是就会在line27 column18的位置报错——它不知道这个condition应该归属于哪个合法的配置项。
可选修复方案(除了移除condition)
- 升级Compose版本:把配置里的
version: "3"改成version: "3.8"或更高,或者直接删掉version字段(使用最新的Compose规范),就能正常使用带condition的依赖配置。 - 保留旧版本:如果不想升级,就只能维持
depends_on为单纯的服务名称列表,放弃条件检查逻辑。
内容的提问来源于stack exchange,提问作者user11092881
相关产品推荐
相关产品推荐

