本指南将帮助您从使用已弃用镜像thingsboard/tb-pe和卷绑定而非本地卷的旧版Docker部署文件迁移。
本指南适用于ThingsBoard PE单机安装。
为什么更改了部署文件?
- 旧文件使用了已弃用的镜像
thingsboard/tb-pe,不支持arm64架构。 - 数据通过具有特定所有权的本地文件夹持久化,而非使用Docker卷机制。
谁需要本指南?
拥有如下或类似docker compose文件的用户:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3.0'
services:
mytbpe:
restart: always
image: "thingsboard/tb-pe:3.9.1PE"
ports:
- "8080:8080"
- "1883:1883"
- "7070:7070"
- "5683-5688:5683-5688/udp"
environment:
TB_QUEUE_TYPE: in-memory
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard
TB_LICENSE_SECRET: PUT_YOUR_LICENSE_SECRET_HERE
TB_LICENSE_INSTANCE_DATA_FILE: /data/license.data
volumes:
- ~/.mytbpe-data:/data
- ~/.mytbpe-logs:/var/log/thingsboard
postgres:
restart: always
image: "postgres:15"
ports:
- "5432"
environment:
POSTGRES_DB: thingsboard
POSTGRES_PASSWORD: postgres
volumes:
- ~/.mytbpe-data/db:/var/lib/postgresql/data
将Postgres数据迁移到Docker卷
创建命名Docker卷:
1
docker volume create --name tb-postgres-data
运行容器并挂载卷,将数据从文件夹复制到新创建的卷中:
1
docker run --rm -v ~/.mytbpe-data/db:/source -v tb-postgres-data:/destination alpine sh -c "cp -rp /source/* /destination/"
将许可证数据迁移到Docker卷
创建命名Docker卷:
1
docker volume create --name tb-pe-license-data
运行容器并挂载卷,将数据从文件夹复制到新创建的卷中:
1
docker run --rm -v ~/.mytbpe-data/:/source -v tb-pe-license-data:/destination alpine sh -c "cp -a /source/license.data /destination/ && chown 799:799 /destination/license.data"
迁移到新部署文件
使用文本编辑器打开docker-compose.yml文件:
1
nano docker-compose.yml
复制当前Docker Compose清单,用当前清单替换旧的清单。如需要,请替换Postgres Docker镜像。
请勿忘记在环境变量部分替换许可证密钥。
数据迁移到Docker卷且docker-compose.yml文件结构与安装示例一致后,即可继续ThingsBoard的升级。