前言
这篇教程其实拖了好久了,十月份的时候经过连续几个晚上的踩坑,终于把整个流程跑通啦。但后面由于自己太懒了,一直没能抽时间把这篇教程记录下来,于是便拖到了现在 (。・ω・。)
拒绝拖延,从我做起。记录下这篇博客,希望能帮到有需要的小伙伴~
环境
- 1 核 2G Centos 腾讯云服务器
- postgres 13.0 数据库
- thingsboard 3.2.1
- tb-gateway 最新版
- emqx 4.0
这里需要注意一下,经过博主测试,1 核 2G 的配置是最低最低的极限配置,实际上,在该配置下用 docker 起四个体积不小的容器,打开网页已经能感受到明显的卡顿了。所以建议有条件的小伙伴升级到 2 核 4G 的配置比较好,这里博主就用 1 核 2G 的配置进行演示。
安装 postgres 数据库
根据 thingsboard 的官方文档,thingsboard 的 docker 镜像里是带了 postgres 数据库的,如下图

因此理论上是不需要单独在安装 postgres 的。但博主在尝试的过程中,碰到了 postgres 的权限问题,即用 thingsboard 镜像里面自带的 postgres 数据库,数据库的初始化总是失败。导致后面 thingsboard 在启动过程中因为在数据库中找不到对应的表,直接就启动失败,退出了。
在查询了很多资料后,在 stackoverflow 上找到了解决办法。
ThingsBoard Docker container deploy resulting in PSQLException

解决办法就是不用 thingsboard 镜像内自带的 postgres 数据库,在环境变量中将连接的数据库地址指向我们自己创建的 postgres 数据库。所以第一步就是用 docker 去创建一个 postgres 数据库。
拉取指定版本的 postgres 镜像
docker pull postgres:13.0

拉取完后查看镜像
docker images

创建并启动容器
docker run --name postgres13 -e POSTGRES_PASSWORD=postgres -p 5432:5432 -v /root/thingsboard/pgdata:/var/lib/postgresql/data -d postgres:13.0
下面解释下这些参数的意思
- –name:将容器命名为一个好记的名字
- -e:设置环境变量。这里设置数据库的密码是 postgres
- -p:进行端口映射。左边是服务器的端口,右边是容器内的端口
- -v:进行目录映射。即将服务器的
/root/thingsboard/pgdata与容器内部的/var/lib/postgresql/data<

本文档详述了一核两G CentOS服务器上使用Docker部署ThingsBoard、tb-gateway和emqx的过程,包括解决postgres权限问题、配置外部数据库、启动ThingsBoard镜像以及安装和配置tb-gateway和emqx。教程中还分享了遇到的问题及解决方案,适合想要在有限资源环境下搭建物联网平台的读者参考。
最低0.47元/天 解锁文章
1135





