最近一个项目使用 springboot订阅MQTT消息获取设备采集数据,使用时序数据库TDengine 存储点位数据。通过docker 容器部署Java程序,启动时初始数据源错误
官网解释: 建立连接 | TDengine 文档 | 涛思数据
原因:TDengine 服务部署在B服务器,Java所在服务器需安装 TDengine-client-3.2.1.0 客户端
注意:TDengine-service 服务和 TDengine-client 客户端版本一定要保证一致,避免不必要的问题发生
解决方法:下载对应版本安装包,上传至服务器,解压后会有一个 TDengine-client-3.2.1.0目录
# 解压
tar -xzvf TDengine-client-3.2.1.0-Linux-x64.tar.gz
进入 目录 cd TDengine-client-3.2.1.0/ 可以看到如下内容
然后在当前目录 ./install_client.sh 执行安装 安装完成 会出现 successful 关键字
安装完成后修改 taos.cfg文件 默认路径为
cd /etc/taos
vi taos.cfg
# 在最后面加 一行并保存 h1.tdengine.com TDengine service 安装服务器IP地址或域名
firstEp h1.tdengine.com:6030
修改完成后,再次启动Java 程序 不出意外的话肯定要出意外,错误信息如下
此时在服务器上使用taos命令能够显示 客户端版本号
在容器里面 会提示找不到命令
继续解决:将taos的两个文件映射到容器内部,在启动Java程序命令后面追加
# 启动命令后面追加
-v /etc/taos/taos.cfg:/etc/taos/taos.cfg -v /usr/lib/libtaos.so:/usr/lib/libtaos.so
再次启动程序成功。
考虑将TDengine-client 客户端打包到容器里面
dockerfile文件
# 在dockerfile文件里面添加如下脚本
# /home/adminis/TDengine/ tar包所在目录 /var/TDengine 挂载到容器内的目录
copy /home/adminis/TDengine/TDengine-client-3.2.1.0-Linux-x64.tar.gz /var/TDengine
workdir /var/TDengine
# 解压
run tar -xvf TDengine-client-3.2.1.0-Linux-x64.tar.gz
workdir /TDengine-client-3.2.1.0
# 安装
run bash install_client.sh