Skip to content

ThingsBoard 部署文档(boot jar + Docker) ​

正文与配图来自原稿。流程:改配置 → Maven 打包 → 服务器放 data 与 -boot.jar → Dockerfile 构建镜像 → 启动访问。
原稿示例版本为 3.4.4-SNAPSHOT、基础镜像 OpenJDK 11;本专栏若跟 4.3.x,请对照文末「补充」调整 JDK / 包名。更细的打包与镜像步骤也可看:打可执行 JAR、jar 制作镜像。

1、thingsboard.yml 配置 ​

1.1、修改数据库配置 ​

按自己的数据库改连接信息(主机、库名、用户名、密码等),一定要写对。常见位置在 application/src/main/resources/thingsboard.yml(或你实际使用的 profile / 环境变量覆盖)。数据库段说明见:application.yml / 配置参数。

1.2、增加数据初始化目录 ​

在 thingsboard.yml 最下面增加如下配置:

yaml
install:
  # 指定数据 data 目录,固定下面这么配置
  data_dir: /usr/share/thingsboard/data

创建租户等操作需要加载默认配置文件;找不到目录会报错,例如:

text
Not valid working directory: " + workDir + ". Please use either root project directory,
application module directory or specify valid "install.data_dir" ENV variable
to avoid automatic data directory lookup!

也可用环境变量 INSTALL_DATA_DIR(或文档中的 install.data_dir)指向同一路径,避免自动查找工作目录失败。

2、Maven install 打包 ​

在 IDEA 右侧打开 Maven,找到工程 Thingsboard (root) 下的 Lifecycle:

Maven:先 clean 再 install

按图示:先执行 clean,再执行 install。耐心等待(大约十多分钟),完成后在 application 模块的 target 目录下会生成许多产物:

application/target 产物

一定要使用带有 -boot 的包(如 thingsboard-3.4.4-SNAPSHOT-boot.jar),这才是 Spring Boot 标准可执行 jar。不要用没有 -boot 的普通 thingsboard-*.jar 去 java -jar。

命令行等价示例:

bash
mvn clean install -DskipTests

3、服务器新建目录 ​

在服务器上新建目录,例如叫 tb,再进入该目录:

服务器创建 tb 目录

上传需要的 data 目录,即 application 模块下的 data(构建后也在 application/target/data,以你实际要带上的系统数据 / JSON 初始化文件为准):

application 下的 data

把整个 data 上传到刚才创建的目录(原稿示例为 /root/tb):

data 已放到 /root/tb

4、上传 jar 包 ​

将打包好的 -boot.jar 上传到同一目录(如 /root/tb):

上传 boot jar

目录中大致应有:

text
/root/tb/
  data/
  thingsboard-xxx-boot.jar
  Dockerfile   # 下一步编写

5、编写 Dockerfile ​

用于构建镜像,示例如下(包名请改成你自己的 -boot.jar 文件名):

dockerfile
FROM thingsboard/openjdk11:bullseye-slim
MAINTAINER AldrichEugene
ADD data/ /usr/share/thingsboard/data
ADD thingsboard-3.4.4-SNAPSHOT-boot.jar /usr/share/thingsboard/bin/thingsboard.jar
EXPOSE 8080
EXPOSE 1883
EXPOSE 5683/udp
EXPOSE 5685/udp
ENTRYPOINT ["java","-jar","/usr/share/thingsboard/bin/thingsboard.jar"]

说明:

  • ADD data/ 路径与 yml 里 install.data_dir: /usr/share/thingsboard/data 一致
  • HTTP 8080、MQTT 1883、CoAP 相关 UDP 端口按需暴露
  • 数据库若在容器外,还需通过环境变量 / 挂载配置把 JDBC 指到可达地址

6、构建镜像 ​

在含 Dockerfile 的目录执行:

bash
docker build -t thingsboard:v1 .

docker build

查看镜像:

bash
docker images | grep thingsboard

查看镜像

7、启动 ​

bash
docker run -d --name thingsboard-v1 \
  -p 8080:8080 \
  -p 1883:1883 \
  thingsboard:v1

若 PostgreSQL 等在宿主机或其它容器,请自行增加 --add-host、--network 或 -e 数据库相关环境变量,保证容器内能连上库。

8、访问 Web 页面 ​

浏览器访问服务器 http://<IP>:8080(默认系统管理员等账号以你版本官方文档为准):

访问 Web


补充(辅) ​

项说明
版本 / JDK原稿 3.4.x + OpenJDK 11;专栏 4.3.x 运行/编译多为 JDK 17+,基础镜像请换对应 JDK,勿继续用 openjdk11 硬套 4.3
包名thingsboard-<version>-boot.jar 随版本变化,Dockerfile 的 ADD 必须改对
官方 Compose不想自己打镜像时,可直接跟 Ubuntu Docker 部署 4.3.x
data_dir容器内路径、挂载路径与 install.data_dir 三者保持一致,否则创建租户 / 加载 demo 仍会报 working directory
持久化生产建议把 data、日志、以及库数据做成 volume,避免容器删除后丢失

相关文章 ​