YAML配置格式的"隐形陷阱"
注意yaml文件的空格不可以用缩进符来代替,有严格的控制可以采用yamllin组件来寻找错误示例
表面正常的配置
services:
kafka:
environment:KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 # 缺失空格
ports:“9092:9092” # 错误缩进
系统化排查流程
语法验证工具
安装校验工具yamllin
1 命令行修改
Bash
pip install yamllint # 检查配置文件
yamllint docker-compose.yml
2 可视化排查在vscode使用插件
使用VSCode的YAML插件查看隐藏字符:
TEXT
services:↵
▪▪kafka:↵
▪▪▪▪image:▌confluentinc/cp-kafka:7.0.1↵
^ 此处显示红色波浪线提示
3 增量调试技巧
分阶段启动服务验证配置:
docker-compose up -d zookeeper # 先启动单服务
docker-compose logs -f zookeeper | grep -i 'binding to port'
典型错误对照表
错误提示 实际原因 修正示例
mapping values are not allowed 冒号后缺少空格 ports: “9092:9092”
did not find expected key 使用Tab缩进 替换为4个空格
service undefined 顶层services拼写错误 检查services:拼写
好了yaml配置格式的解决方案就到这里了。