docker内访问tdengine服务

踩坑记

springboot项目使用docker部署。由于tdengine原生连接方式需要安装客户端,第一想法是宿主机装好客户端,然后映射驱动到容器内部,网上找的教程也基本是这种思路。尝试了一天失败了。

错误1:libjemalloc.so.2 file: No such file or directory。大概意思就是没有这个文件嘛。进入容器内部试了一下确实没有。那就安装一个呗

错误2:java.lang.UnsatisfiedLinkError: /usr/lib/libtaos.so: /usr/lib/x86_64-linux-gnu/libjemalloc.so.2: cannot allocate memory in static TLS block

到这个错误感觉是思路错了。百度第一个错误基本没有解决方案。tdengine官方找文档、群里问别人都是个蛋。然后重点来了去github上搜issue就找到相同的错误1。得到的解决方案是直接在容器内部安装客户端

Caused by: java.lang.UnsatisfiedLinkError: /usr/lib/libtaos.so.3.0.4.0: libjemalloc.so.2: cannot open shared object file: No such file or directory · Issue #20988 · taosdata/TDengine · GitHub

宿主机安装客户端其实是可以的,但是可能是我使用的版本问题导致的

问其他大佬说是可以成功的就映射两个文件 

-v /etc/taos/taos.cfg:/etc/taos/taos.cfg \

-v /usr/lib/libtaos.so:/usr/lib/libtaos.so \

确定走方案2 容器内部安装客户端。基本就是改dockerfile了

1.下载对应的客户端,放入dockerfile所在文件夹。对的客户端很重要不然会连接失败

建立连接 | TDengine 文档 | 涛思数据

 2.dockerfile内也就是添加几句,copy、解压、执行脚本

# 复制到tmp文件夹下
COPY TDengine-client-3.0.5.0-Linux-x64.tar.gz /tmp
# 切换文件夹
WORKDIR /tmp
# 解压
RUN tar xvf TDengine-client-3.0.5.0-Linux-x64.tar.gz
RUN ls
# 切换文件夹
WORKDIR /tmp/TDengine-client-3.0.5.0
RUN ls
# 执行安装脚本
RUN bash install_client.sh

# 可以删除安装包减少容器体积

3.安装完成后需要编辑 taos.cfg 文件

这里可以修改宿主机文件如何映射到容器内部。(默认路径/etc/taos/taos.cfg),将 firstEP 修改为 TDengine 服务器的 End Point,例如:h1.tdengine.com:6030。

总结:坑多报错别百度(看情况哈),说是国内数据库国内教程却少的可怜、遇到报错去github里面搜Issue估计还来的快里面我看已经记录了991个问题。

加个官方群吧没社区(github算吗)群里提问还是会有人解答一下的,但是效率不高提问的人太多。

多看文档、这不是mysql那些数据库先入为主的想法会让自己走很多弯路,文档里面很多细节会忽略掉。像数据库原生、rest连接字符串都不知道是个啥为啥会有两个呀没细看文档满脑疑问,那些个创建表语句写一个给你来一个。

下载的客户端里面有代码示例,可以打开看看代码,复制sql、代码比自己一步步去试探语法来的快。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值