项目中为了保持mysql和es的数据同步,引入了canal项目, 项目采用源码构建部署,docker进行发布。

其中部署client-adapter时,因需要测试/正式使用同一个配置文件,通过docker的环境变量进行区分,遇到一个情况就是 无法识别yml文件中如下这种占位符  

${CANAL_SOURCE_KEY:defaultDS}

通过分析源码,发现加载参数的时候,因为 YmlConfigBinder.bindYmlToObj加载配置文件的过程中,处理占位符时,没有传入默认值分割符,所以并不会去查询真正的key,导致查不到对应的系统环境变量

 图1

图2

如下图(高亮部分)修改即可解决

GitHub 加速计划 / ca / canal
47
10
下载
alibaba/canal: Canal 是由阿里巴巴开源的分布式数据库同步系统,主要用于实现MySQL数据库的日志解析和实时增量数据订阅与消费,广泛应用于数据库变更消息的捕获、数据迁移、缓存更新等场景。
最近提交(Master分支:2 个月前 )
af937544 - 3 个月前
9f2fc740 - 3 个月前
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐