项目中为了保持mysql和es的数据同步,引入了canal项目, 项目采用源码构建部署,docker进行发布。
其中部署client-adapter时,因需要测试/正式使用同一个配置文件,通过docker的环境变量进行区分,遇到一个情况就是 无法识别yml文件中如下这种占位符
${CANAL_SOURCE_KEY:defaultDS}
通过分析源码,发现加载参数的时候,因为 YmlConfigBinder.bindYmlToObj加载配置文件的过程中,处理占位符时,没有传入默认值分割符,所以并不会去查询真正的key,导致查不到对应的系统环境变量
图1
图2
如下图(高亮部分)修改即可解决



