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 最下面增加如下配置:
install:
# 指定数据 data 目录,固定下面这么配置
data_dir: /usr/share/thingsboard/data创建租户等操作需要加载默认配置文件;找不到目录会报错,例如:
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:

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

一定要使用带有 -boot 的包(如 thingsboard-3.4.4-SNAPSHOT-boot.jar),这才是 Spring Boot 标准可执行 jar。不要用没有 -boot 的普通 thingsboard-*.jar 去 java -jar。
命令行等价示例:
mvn clean install -DskipTests3、服务器新建目录
在服务器上新建目录,例如叫 tb,再进入该目录:

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

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

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

目录中大致应有:
/root/tb/
data/
thingsboard-xxx-boot.jar
Dockerfile # 下一步编写5、编写 Dockerfile
用于构建镜像,示例如下(包名请改成你自己的 -boot.jar 文件名):
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、MQTT1883、CoAP 相关 UDP 端口按需暴露 - 数据库若在容器外,还需通过环境变量 / 挂载配置把 JDBC 指到可达地址
6、构建镜像
在含 Dockerfile 的目录执行:
docker build -t thingsboard:v1 .
查看镜像:
docker images | grep thingsboard
7、启动
docker run -d --name thingsboard-v1 \
-p 8080:8080 \
-p 1883:1883 \
thingsboard:v1若 PostgreSQL 等在宿主机或其它容器,请自行增加 --add-host、--network 或 -e 数据库相关环境变量,保证容器内能连上库。
8、访问 Web 页面
浏览器访问服务器 http://<IP>:8080(默认系统管理员等账号以你版本官方文档为准):

补充(辅)
| 项 | 说明 |
|---|---|
| 版本 / 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,避免容器删除后丢失 |
