docker-compose报service must be a mapping, not a NoneType错误
错误原因
service must be a mapping, not a NoneType报错由YAML语法不合法导致,解析器无法识别到合法的services映射结构,具体语法问题如下:
- 顶级配置
version: "3.1"与services:写在同一行,YAML为换行、缩进敏感格式,同级配置必须单独占行 environment字段下的列表项未换行缩进,直接拼接在environment:关键字后,导致解析器将该字段识别为空值None- 两个服务
postgres-source、postgres-target未正确换行分隔,缩进层级混乱 postgres-target服务下的command配置未单独换行缩进,与前序environment配置挤在同一行,无法被识别为服务子配置
修复方案
将配置文件调整为符合YAML语法的正确缩进、换行格式,修正后的完整配置如下:
version: "3.1" services: postgres-source: image: postgres:12.6 ports: - "5439:5432" environment: - POSTGRES_PASSWORD=postgres postgres-target: image: postgres:12.6 ports: - "5440:5432" environment: - POSTGRES_PASSWORD=postgres command: [ "postgres", "-c", "wal_level=logical" ]
修改完成后,可以先执行docker-compose config命令做格式预校验,如果命令能正常输出解析后的完整配置结构,说明格式无误,可正常执行启动命令。
内容的提问来源于stack exchange,提问作者cobtri
相关产品推荐
相关产品推荐

