postgresql - 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
数据库中创建表,但似乎并没有这样。对此错误的可能原因有任何猜测吗?谢谢。
解决方案
似乎问题是由 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
推荐阅读
- terraform - 如何检测在 Terraform 之外所做的更改?
- python - Python/Flask 获取 HTML 输入并将它们存储在 SQL Server 数据库中
- php - 仅将多维数组与键数组进行比较
- iot - ModuleClient IoT Hub Edge 设备:如何从设备队列接收消息?
- c# - Word Automation 重置编号方案
- json - 处理应该是 json 的数据框列时出现 JSONDecodeError
- loops - 更改变量顺序后“for”循环突然无限
- c# - 如何将“未知”对象作为参数传递并使用它的原始对象类型进行反序列化
- c++ - 从非提升的插件 DLL 随意提升自己的代码
- android - 如何使用 Dagger Hilt 在动态功能模块中创建 ViewModel?