首页 > 解决方案 > Dockerized ThingsBoard + Dockerized PostgreSQL

问题描述

我使用以下命令启动一个运行 PostgreSQL 的容器:

docker run -p 5432:5432 -d -it -e POSTGRES_USER='postgres' -e POSTGRES_PASSWORD='postgres' -e POSTGRES_DB='thingsboard' --name postgres postgres

然后,我启动 ThingsBoard,提供一些环境变量来使用 PostgreSQL 数据库:

docker run -it -p 9090:9090 -p 1883:1883 -p 5683:5683/udp -v ~/.mytb-data:/data -v ~/.mytb-logs:/var/logs/thingsboard --name thingsboard --restart always -e SPRING_DATASOURCE_URL=jdbc:postgresql://<MY_LOCAL_IP>:5432/thingsboard -e SPRING_DATASOURCE_USERNAME=postgres -e SPRING_DATASOURCE_PASSWORD=postgres thingsboard/tb-postgres

<MY_LOCAL_IP>我在本地网络上的 IP 地址在哪里。我检查了 PostgreSQL,它实际上绑定到<MY_LOCAL_IP>:5432(通过 PGAdmin 验证)。thingsboard容器返回错误:

在此处输入图像描述

我希望 ThingsBoard 本身在thingsboard数据库中创建表,但似乎并没有这样。对此错误的可能原因有任何猜测吗?谢谢。

标签: postgresqlthingsboard

解决方案


似乎问题是由 volumes: 给出的,mytb-data并且mytb-logs之前已经创建并且不是空的。只要我们使用以下方式启动thingsboard,容器就可以工作:

docker run -it -p 9090:9090 -p 1883:1883 -p 5683:5683/udp --name thingsboard --restart always -e SPRING_DATASOURCE_URL=jdbc:postgresql://<MY_LOCAL_IP>:5432/thingsboard -e SPRING_DATASOURCE_USERNAME=postgres -e SPRING_DATASOURCE_PASSWORD=postgres thingsboard/tb-postgres

推荐阅读