Linux下docker springboot项目连接TDengine

669 阅读3分钟

现物联网项目准备迁移到TDengine时序数据库

然后写了个demo,部署在docker上,连接数据服务器上的TDengine,发现好多坑,不得不重新看一遍文档 官方文档链接

1.1 TDengine安装docker run一下

docker run -d --name tdengine --hostname="tdengine-server" 
    -v /taos/log:/var/log/taos \
    -v /taos/data:/var/lib/taos  \
    -v /usr/share/zoneinfo:/usr/share/zoneinfo \
    -e TZ=Asia/Shanghai \
    -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp tdengine/tdengine
  • 挂载时区很重要 -e TZ=Asia/Shanghai \ 不然时间就不对
  • --hostname="tdengine-server" 这个客户端连接的时候有用
  • 跑起来就可以 taos进去连接了,这里不深入

springboot项目连接 docker运行 (与TDengine不为同一个服务器)采用应用驱动(taosc)方式连接

若用RESTful 接口的 taosAdapter连接没有下面这么麻烦,但性能和功能会打折

项目代码不多深入

image.png

打包部署项目之前需要下载对应tdengine版本的linux类库(libtaos.so)

image.png 在官网建立连接目录下,下载linux客户端压缩包,然后解压,取出driver文件夹下的libtaos.so

制作项目镜像

image.png

将jar包以及libtaos.so放入服务器

Dockerfile编写(主要是引入libtaos.so)

image.png

ADD libtaos.so /usr/lib

然后制作镜像打包,运行(不赘述) 注意挂载hosts -v /etc/hosts:/etc/hosts -v /etc/hostname:/etc/hostname \

docker run -d -p 8886:8886 --network=projectBridge
-v /etc/localtime:/etc/localtime
-v /etc/hosts:/etc/hosts -v /etc/hostname:/etc/hostname
--restart=always --privileged=true --name demo demo:v1

最后的问题

运行的时候,请求接口,会报# Unable to resolve FQDN

  首先,服务端安装tdengine,按照官方文档即可,客户端使用时按照文档先安装并下载jar包。在 windows 环境开发时需要安装 TDengine 对应的 windows 客户端,Linux 服务器安装完 TDengine 之后默认已安装 client,也可以单独安装 Linux 客户端 连接远程 TDengine Server。详见官方文档:文档 | 涛思数据
  服务端可以理解成安装tdengine的服务器,客户端可以理解成你要操作的那台电脑。客户端是windows,所以先安装tdengine对应的客户端,然后再开发相关代码。
  按照官方文档编写完代码后,发现了部分问题。运行show create table test等语句时未报错,但是运行select * from test等语句时报错。报错原因为:Unable to resolve FQDN。

———————————————— 版权声明:本文为CSDN博主「慢点走」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/weixin_4284…

配置FQDN

在docker项目运行服务器,修改hosts

  • /etc目录下找hosts文件
  • 添加一行 FQDN 如:

47.111.142.000 tdengine-server

47.111.142.000(TDengine IP地址) tdengine-server(1.1启动时指定的--hostname="tdengine-server" )

这样应该就没有问题了,可以正常访问了

image.png

本地开发的话,windows要部署客户端,再说。

可能问题点

  1. /usr/lib/libtaos.so: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /usr/lib/libtaos.so)

可以看出这里缺少某些东西,判断是由于我们使用了精简版的JDK,那么我们就将原来的alpine版本的JDK给更换掉。切换镜像为 openjdk:8