制作jdk tdengine client的dockerfile及常见问题

背景

公司容器环境,device微服务需要访问tdengine server(下面简称td数据库),该server在k8s集群外,和k8s在同一个vpc下面。
经开发测试,JNI经过client访问td数据库要比通过RESTful api性能高出23.5%-48%,所以微服务通过client连接,以下是部署过程及遇到的一些问题。

创建Dockerfile

经过测试tdengine不支持alpine发行版构建,同时Java微服务用alpine的访问报错,出现问题。通过下载安装包,执行 install_client.sh的形式安装,如下所示,此dockerfile为新构建的基础镜像。

FROM openjdk:8
LABEL maintainer novice
ADD TDengine-client-2.6.0.8-Linux-x64.tar.gz /opt/
WORKDIR /opt/TDengine-client-2.6.0.8
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo 'Asia/Shanghai' >/etc/timezone && \
    /bin/bash install_client.sh

上面的ADD命令拷贝的同时解压缩。

假设上面创建的基础镜像名字为:openjdk8_taos:1,用上面的基础镜像创建微服务镜像,如下所示:

FROM harbor.shop.com/library/openjdk8_taos:1
LABEL maintainer Novice

COPY ./target/shop-modules-device.jar /opt/
EXPOSE 9230
CMD java -Dspring.profiles.active=stage -jar /opt/shop-modules-device.jar

注意事项

  • 之前有尝试通过自建通过COPY libtaos.so到镜像/usr/lib或者/usr/lib64的形式创建dockerfile,但是出现连接超时,所以放弃了;

  • tdengine client连接td server时,用到fqdn,如果没有用到dns解析,上面需要通配置/etc/hosts,指定解析,同时,hosts解析在镜像里面配置后,每次会被覆盖掉,关于这个问题,可以参考其他文章的解决办法,这里不再赘述;

  • 本次实验中使用的版本是2.6.0.8,尝试在/etc/taos/taos.cfg中修改fqdn为ip时,taos启动不了,应该是不支持。另外,如果之前默认使用hostname作为fqdn,运行起来之后。当想要修改fqdn时,需要将/var/lib/taos删掉,特别注意,这里把数据库也都删除了,如果不想删除,这里我用grep命令搜到所包含旧的hostname,然后手动修改为新的,操作步骤如下所示:
    在这里插入图片描述
    在这里插入图片描述

    之后即可正常restart taosd。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值