Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to make JDBC connect to TDengine in docker environment #8235

Closed
kct12345 opened this issue Oct 14, 2021 · 7 comments
Closed

how to make JDBC connect to TDengine in docker environment #8235

kct12345 opened this issue Oct 14, 2021 · 7 comments
Assignees
Labels
help wanted Extra attention is needed question Further information is requested

Comments

@kct12345
Copy link

请教一个问题我jdbc连接taos部署了一个程序,我制作成docker镜像运行,提示找不到java.lang.UnsatisfiedLinkError: no taos in java.library.path,猜测是libtaos.so找不到,我制作镜像的时候已经把他复制进去了。

我的DockerFile如下
FROM openjdk:8-jdk-alpine

VOLUME /tmp

EXPOSE 8081

ADD ./taos-jb-service.jar /app.jar
ADD ./libtaos.so.2.0.20.17 /usr/lib
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV JAVA_OPTS=""

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
~

@kct12345 kct12345 added help wanted Extra attention is needed question Further information is requested labels Oct 14, 2021
@huolibo
Copy link
Contributor

huolibo commented Oct 14, 2021

有可能/usr/lib不在java的PATH中, 测试下将libtaos.so放在/usr/bin目录下

@kct12345
Copy link
Author

有可能/usr/lib不在java的PATH中, 测试下将libtaos.so放在/usr/bin目录下

测试过一样的报错。目前猜测是是不是整个涛思客户端都要打进去

@huolibo
Copy link
Contributor

huolibo commented Oct 15, 2021

我基于centos镜像构建的环境将libtaos.so放在/usr/lib下。然后copy一份taos.cfg到/etc/taos目录下。可以正常执行。建议先手动构建调试成功后,再编写Dockerfile文件。

@sangshuduo
Copy link
Contributor

暂时不支持 在alpine 环境下运行

@kct12345
Copy link
Author

暂时不支持 在alpine 环境下运行

确实不支持,所以我替换了openjdk

@kct12345
Copy link
Author

我基于centos镜像构建的环境将libtaos.so放在/usr/lib下。然后copy一份taos.cfg到/etc/taos目录下。可以正常执行。建议先手动构建调试成功后,再编写Dockerfile文件。

验证成功

@kct12345
Copy link
Author

kct12345 commented Oct 15, 2021

请教一个问题我jdbc连接taos部署了一个程序,我制作成docker镜像运行,提示找不到java.lang.UnsatisfiedLinkError: no taos in java.library.path,猜测是libtaos.so找不到,我制作镜像的时候已经把他复制进去了。

我的DockerFile如下 FROM openjdk:8-jdk-alpine

VOLUME /tmp

EXPOSE 8081

ADD ./taos-jb-service.jar /app.jar ADD ./libtaos.so.2.0.20.17 /usr/lib ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV JAVA_OPTS=""

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] ~

暂时不支持alpine环境
我重新编写DockerFile,最low的那种测试,希望大家帮我优化下,如下:
第一步编写DockerFile:

#FROM openjdk:8-jdk-alpine 暂不支持
FROM openjdk:8
VOLUME /tmp
EXPOSE 8081
ADD ./taos-jb-service.jar /app.jar
#添加taos的库文件非常重要不然会报错java.lang.UnsatisfiedLinkError: no taos in java.library.path
ADD ./libtaos.so /usr/lib/
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

第二步制作镜像
docker build -t taos-jb-service:latest -f ./Dockerfile .

第三步启动镜像
docker run -p 8081:8081 -v /data:/data --restart always $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host " $2 ":" $1}}') -d taos-jb-service:latest
简单解释下$(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host " $2 ":" $1}}') 意思
就是把宿主机hosts内容搞到容器的/etc/hosts文件中,为容器配置上 FQDN
第四步查看你的程序运行情况
docker ps 查看
docker logs -f 容器名称查看日志
去测试下你的接口能不能查询到数据把
假设报这个错误是因为hosts文件没有配置 FQDN

Error querying database. Cause: java.sql.SQLException: TDengine ERROR (80000015): Unable to resolve FQDN\n### The error may exist in class path resource [mybatis-mappers/TaosZiDianMapper.xml]\n### The error may involve defaultParameterMap\n### The error occurred while setting parameters\n### SQL: show tables like ?\n### Cause: java.sql.SQLException: TDengine ERROR (80000015): Unable to resolve FQDN\n; uncategorized SQLException; SQL state []; error code [-2147483627]; TDengine ERROR (80000015): Unable to resolve FQDN; nested exception is java.sql.SQLException: TDengine ERROR (80000015): Unable to resolve FQDN",

@yu285 yu285 self-assigned this Oct 16, 2021
@yu285 yu285 changed the title jdbc连接taos部署了一个程序,如何制作成docker镜像运行 jdbc连接taos部署了一个程序,如何制作成docker镜像运行 how to make JDBC connect to TDengine in docker environment Oct 16, 2021
@yu285 yu285 changed the title jdbc连接taos部署了一个程序,如何制作成docker镜像运行 how to make JDBC connect to TDengine in docker environment how to make JDBC connect to TDengine in docker environment Oct 16, 2021
@yu285 yu285 mentioned this issue Oct 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants
@sangshuduo @huolibo @kct12345 @yu285 and others