Docker應(yīng)用連接TDengine數(shù)據(jù)庫(kù)的解決方案

1帽揪、工作環(huán)境

開發(fā)工具:IDEA召耘,安裝插件docker

TDengine Version:2.0.20.5

taos jdbc Version: 2.0.22

Springboot Version: 2.4.5

Docker Version: 20.10.10


2爪飘、Dockerfile設(shè)置

### 基礎(chǔ)鏡像
FROM openjdk:8

### 作者
MAINTAINER luojiarui <luojiarui2@163.com>

### 系統(tǒng)編碼
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

### 聲明掛載點(diǎn)雪隧,容器內(nèi)此路徑會(huì)對(duì)應(yīng)宿主機(jī)的某個(gè)文件夾
VOLUME /tmp

### 應(yīng)用構(gòu)建成功以后jar文件被復(fù)制到鏡像內(nèi)丘损,名字也改為app.jar
ADD target/service-app-1.0-SNAPSHOT.jar app.jar

### 啟動(dòng)容器時(shí)的進(jìn)程
ENTRYPOINT ["java"彭羹, "-jar", "/app.jar"]

### 暴露的端口
EXPOSE 8099
    

在IDEA中編寫一個(gè)Dorckerfile,文件的位置和springboot項(xiàng)目的根目錄一致岛啸。

使用遠(yuǎn)程的Ubuntu服務(wù)器的docker進(jìn)行鏡像打包和部署钓觉。

再檢查一遍項(xiàng)目的配置文件,這里需要設(shè)置jdbc的連接配置:

### 設(shè)置JDBC的連接地址坚踩,必須加上taos的賬號(hào)密碼荡灾,這里使用的是TDengine的默認(rèn)密碼
taosJdbc:
    url: jdbc:TAOS://node1:6030//alpha_db?user=root&password=taosdata

### 使用Restful連接taos的配置也記錄下來(lái)
url:
    taos-path: http://node1:6041/rest/sql
    table: alpha_db.can_super

從項(xiàng)目的配置文件中瞬铸,可以看到FQDN設(shè)置的是node1批幌。

node1是TDengine機(jī)所在機(jī)器的地址,其真實(shí)ip地址為: 129.122.12.12赴捞。

特別要注意這里的修改逼裆,否則會(huì)出現(xiàn)問(wèn)題。


3赦政、創(chuàng)建容器

根據(jù)鏡像文件service-app:v1創(chuàng)建容器的命令如下胜宇。

docker run 
    -d ## 后臺(tái)運(yùn)行
    -name service-app ## 容器命令
    -p 8099:8099 ## 端口映射,<主機(jī)端口: 容器端口>
    -v /usr/local/taos/driver/libtaos.so.2.0.20.5:/usr/lib/libtaos.so ## 指定容器里taos的數(shù)據(jù)庫(kù)客戶端
    -v /usr/share/zoneinfo:/usr/share/zoneinfo ## 數(shù)據(jù)卷映射
    -e TZ=AsiaShanghai ## 時(shí)區(qū)
    --add-host=node1:10.30.5.55 ## 增加DNS解析
    service-app:v1 ## 容器名

4恢着、容器內(nèi)缺少驅(qū)動(dòng)

問(wèn)題1: java使用JDBC建立簡(jiǎn)介桐愉,在windows系統(tǒng)上可以正常運(yùn)行,打包放到docker容器中運(yùn)行時(shí)掰派,出現(xiàn)如下異常:

$ Caused by: Java.lang.NoClassDefFonderError: Could not initialize calss com.taosdata.jdbc.TSDBJNIConnecter
....

通過(guò)查找前人的方案从诲,通過(guò)指定taos驅(qū)動(dòng)和時(shí)區(qū),解決該問(wèn)題靡羡。

https://github.com/taosdata/TDengine/issues/4238 "java.lang.NoClassDefFoundError: Could not initialize class com.taosdata.jdbc.TSDBJNIConnector #4238"

問(wèn)題2:使用的基礎(chǔ)鏡像Aline不支持

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

在驅(qū)動(dòng)已經(jīng)映射的基礎(chǔ)上系洛,依然缺少某些文件,那么就找一下為什么缺少的原因略步。

進(jìn)入docker以后描扯,查找一下。

### 進(jìn)入docker
root@xxxx: docker exec -it service-app sh

### 查找
/# ldd /usr/lib/libtaos.so
    ldd(0x7fefebee2000)
    libpthread.so.0 => ldd(0x7fefebee2000)
    libm.so.6 => ldd(0x7fefebee2000)
    librt.so.1 => ldd(0x7fefebee2000)
    libc.so.6 => ldd(0x7fefebee2000)
Error loading shared libaray ld-linux-x86-64.so.2: No such file or directory (need by /usr/lib/libtaos.so)
Error relocating /usr/lib/libtaos.so: _pthread_register_cancel: sysbol not found
...

可以看出這里缺少某些東西趟薄,判斷是由于我們使用了精簡(jiǎn)版的JDK绽诚,那么我們就將原來(lái)的alpine版本的JDK給更換掉。

### 原來(lái)的基礎(chǔ)鏡像
FROM openjdk:8-alpine

### 更換為
FROM openjdk:8

通過(guò)更換基礎(chǔ)鏡像杭煎,雖然鏡像文件從161MB增加到了320MB恩够,但是該問(wèn)題解決。


5羡铲、容器無(wú)法連接TDengine

無(wú)法連接TDengine: TDengine ERROR (80000015): Unable to resolve FQDN.

JNI CONNECTION is NULL

解決該問(wèn)題的辦法即是注意JDBC連接的時(shí)候不能使用IP地址蜂桶,然后在運(yùn)行的容器的時(shí)候增加以下的命令。

--add-host=node1:10.30.5.55 ## 增加DNS解析

6也切、總結(jié)

目前TDengine暫時(shí)沒(méi)有看到官方指導(dǎo)案例扑媚,在使用docker連接TDengine的時(shí)候注意以上細(xì)節(jié)妥曲,一般不會(huì)有任何問(wèn)題。

特別感謝濤思數(shù)據(jù)的董工提供的技術(shù)支持钦购。

如果您覺得上面的內(nèi)容對(duì)您有幫助歡迎點(diǎn)贊檐盟、評(píng)論、轉(zhuǎn)發(fā)押桃!
更多內(nèi)容請(qǐng)查閱作者博客:https://jiaruiblog.com
或者star作者github: https://github.com/Jarrettluo?tab=repositories

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葵萎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唱凯,更是在濱河造成了極大的恐慌羡忘,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磕昼,死亡現(xiàn)場(chǎng)離奇詭異卷雕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)票从,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門漫雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人峰鄙,你說(shuō)我怎么就攤上這事浸间。” “怎么了吟榴?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵魁蒜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吩翻,道長(zhǎng)兜看,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任狭瞎,我火速辦了婚禮细移,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脚作。我一直安慰自己葫哗,他們只是感情好缔刹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布球涛。 她就那樣靜靜地躺著,像睡著了一般校镐。 火紅的嫁衣襯著肌膚如雪亿扁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天鸟廓,我揣著相機(jī)與錄音从祝,去河邊找鬼襟己。 笑死,一個(gè)胖子當(dāng)著我的面吹牛牍陌,可吹牛的內(nèi)容都是我干的擎浴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼毒涧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贮预!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起契讲,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仿吞,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捡偏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唤冈,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年银伟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了你虹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彤避,死狀恐怖售葡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忠藤,我是刑警寧澤挟伙,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站模孩,受9級(jí)特大地震影響尖阔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜榨咐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一介却、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧块茁,春花似錦齿坷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至佩耳,卻和暖如春遂蛀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背干厚。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工李滴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留螃宙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓所坯,卻偏偏與公主長(zhǎng)得像谆扎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芹助,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容