Sfoglia il codice sorgente

docs: 更新部署文档和项目说明

- deploy/README.md:
  - 安装目录 /opt/iot-platform -> /mnt/iot-platform
  - 网络模式 host -> bridge,新增端口映射说明
  - 去掉自动回滚描述,改为保留容器排查
  - 新增容器架构表格和 TDengine 配置文件说明

- CLAUDE.md:
  - Redis host: localhost -> ${REDIS_HOST:localhost}
  - TDengine URL: 127.0.0.1 -> 172.21.185.173
  - 环境变量示例添加 REDIS_HOST
mqy20260511
humanleft 2 settimane fa
parent
commit
08860c245f
2 ha cambiato i file con 39 aggiunte e 29 eliminazioni
  1. 4
    3
      CLAUDE.md
  2. 35
    26
      deploy/README.md

+ 4
- 3
CLAUDE.md Vedi File

9
 - **Backend**: Spring Boot 2.5.15, Java 8, Spring Security 5.7.12, JWT authentication
9
 - **Backend**: Spring Boot 2.5.15, Java 8, Spring Security 5.7.12, JWT authentication
10
 - **Frontend**: Vue 2 + Element UI (separate repository, not in this workspace)
10
 - **Frontend**: Vue 2 + Element UI (separate repository, not in this workspace)
11
 - **Database**: MySQL 8 (dual datasource via Druid), TDengine 3.x for time-series
11
 - **Database**: MySQL 8 (dual datasource via Druid), TDengine 3.x for time-series
12
-- **Cache**: Redis (localhost:6379)
12
+- **Cache**: Redis (`${REDIS_HOST:localhost}:6379`)
13
 - **Message Broker**: MQTT (EMQX on 47.104.204.180:1883)
13
 - **Message Broker**: MQTT (EMQX on 47.104.204.180:1883)
14
 
14
 
15
 ## Build & Run Commands
15
 ## Build & Run Commands
55
 ### TDengine (Time-Series Database)
55
 ### TDengine (Time-Series Database)
56
 - Used for high-frequency IoT telemetry ingestion
56
 - Used for high-frequency IoT telemetry ingestion
57
 - Connection pool: HikariCP via `TDengineService`
57
 - Connection pool: HikariCP via `TDengineService`
58
-- Connects to `jdbc:TAOS://127.0.0.1:6031/`
58
+- Connects to `jdbc:TAOS://172.21.185.173:6031/` (host network, via host IP)
59
 - Super-table pattern with column caching (`stableColumnCache`)
59
 - Super-table pattern with column caching (`stableColumnCache`)
60
 
60
 
61
 ### Redis
61
 ### Redis
62
-- Host: `localhost:6379`
62
+- Host: `${REDIS_HOST:localhost}:6379` (production overrides via `REDIS_HOST` env var)
63
 - Key patterns (defined in `common/RedisKeys.java`):
63
 - Key patterns (defined in `common/RedisKeys.java`):
64
   - `DSB:active:devices` — Set of active IoT device keys
64
   - `DSB:active:devices` — Set of active IoT device keys
65
   - `DSB:<controllerId>:<metricName>` — Hash storing device telemetry
65
   - `DSB:<controllerId>:<metricName>` — Hash storing device telemetry
81
 MYSQL_USERNAME=root
81
 MYSQL_USERNAME=root
82
 MYSQL_PASSWORD="..."
82
 MYSQL_PASSWORD="..."
83
 REDIS_PASSWORD=
83
 REDIS_PASSWORD=
84
+REDIS_HOST=172.21.185.173
84
 MQTT_USERNAME=...
85
 MQTT_USERNAME=...
85
 MQTT_PASSWORD=...
86
 MQTT_PASSWORD=...
86
 TDENGINE_USERNAME=root
87
 TDENGINE_USERNAME=root

+ 35
- 26
deploy/README.md Vedi File

2
 
2
 
3
 ## 概述
3
 ## 概述
4
 
4
 
5
-本项目使用 Podman 容器化部署,通过 `deploy.sh` 脚本实现一键构建、上传、构建镜像、健康检查和自动回滚
5
+本项目使用 Podman 容器化部署,通过 `deploy.sh` 脚本实现一键构建、上传、构建镜像、健康检查。
6
 
6
 
7
 ## 服务器环境
7
 ## 服务器环境
8
 
8
 
10
 - **OS**: Alibaba Cloud Linux 3
10
 - **OS**: Alibaba Cloud Linux 3
11
 - **容器运行时**: Podman 4.9.4 (docker 兼容)
11
 - **容器运行时**: Podman 4.9.4 (docker 兼容)
12
 - **Java**: OpenJDK 1.8 (容器内)
12
 - **Java**: OpenJDK 1.8 (容器内)
13
-- **安装目录**: `/opt/iot-platform/`
13
+- **安装目录**: `/mnt/iot-platform/`(兼容软链接 `/opt/iot-platform`
14
 - **容器名称**: `iot-platform`
14
 - **容器名称**: `iot-platform`
15
 
15
 
16
 ## 目录结构
16
 ## 目录结构
17
 
17
 
18
 ```
18
 ```
19
-/opt/iot-platform/
19
+/mnt/iot-platform/
20
 ├── iot-platform.jar          # 当前运行版本
20
 ├── iot-platform.jar          # 当前运行版本
21
 ├── Dockerfile                # 容器镜像构建定义
21
 ├── Dockerfile                # 容器镜像构建定义
22
 ├── start-container.sh        # 容器启动脚本(加载 .env)
22
 ├── start-container.sh        # 容器启动脚本(加载 .env)
29
 └── logs/                     # 日志输出(宿主机挂载)
29
 └── logs/                     # 日志输出(宿主机挂载)
30
 ```
30
 ```
31
 
31
 
32
+## 容器架构
33
+
34
+| 容器 | 网络模式 | 端口映射 | 数据持久化 |
35
+|------|---------|---------|-----------|
36
+| `tdengine-operator` | host | 6031, 6041 | `/mnt/tdengine-operator/data` |
37
+| `taos-explorer` | bridge | `127.0.0.1:6060->6060` | `/mnt/taos-explorer-data` |
38
+| `iot-platform` | bridge | `0.0.0.0:8887->8887` | `/mnt/iot-platform/logs` |
39
+
32
 ## 快速开始
40
 ## 快速开始
33
 
41
 
34
 ### 首次部署(服务器初始化)
42
 ### 首次部署(服务器初始化)
35
 
43
 
36
-确保服务器上已有 `/opt/iot-platform/` 目录,并包含 `Dockerfile`、`.env`、`start-container.sh`:
44
+确保服务器上已有 `/mnt/iot-platform/` 目录,并包含 `Dockerfile`、`.env`、`start-container.sh`:
37
 
45
 
38
 ```bash
46
 ```bash
39
 # 从本地同步必要文件到服务器
47
 # 从本地同步必要文件到服务器
40
-scp deploy/setup-server.sh root@47.104.204.180:/opt/iot-platform/
41
-scp .env root@47.104.204.180:/opt/iot-platform/
42
-scp Dockerfile root@47.104.204.180:/opt/iot-platform/
43
-scp start-container.sh root@47.104.204.180:/opt/iot-platform/
44
-ssh root@47.104.204.180 "chmod +x /opt/iot-platform/start-container.sh"
48
+scp deploy/setup-server.sh root@47.104.204.180:/mnt/iot-platform/
49
+scp .env root@47.104.204.180:/mnt/iot-platform/
50
+scp deploy/Dockerfile root@47.104.204.180:/mnt/iot-platform/
51
+scp deploy/start-container.sh root@47.104.204.180:/mnt/iot-platform/
52
+ssh root@47.104.204.180 "chmod +x /mnt/iot-platform/start-container.sh"
45
 ```
53
 ```
46
 
54
 
47
 然后执行首次部署:
55
 然后执行首次部署:
62
 
70
 
63
 流程:
71
 流程:
64
 1. 本地执行 `mvn clean package`
72
 1. 本地执行 `mvn clean package`
65
-2. 上传 jar 到服务器
73
+2. 上传 jar 到服务器 `/mnt/iot-platform/`
66
 3. 备份当前版本(带时间戳)
74
 3. 备份当前版本(带时间戳)
67
 4. 停止并删除旧容器
75
 4. 停止并删除旧容器
68
 5. 替换 jar 并构建新镜像
76
 5. 替换 jar 并构建新镜像
69
-6. 启动容器(host 网络模式
77
+6. 启动容器(bridge 网络模式,端口映射 `8887:8887`
70
 7. 健康检查(`/actuator/health`)
78
 7. 健康检查(`/actuator/health`)
71
-8. 失败则自动回滚到上一个版本
79
+8. 失败时保留容器用于排查(不再自动回滚)
72
 
80
 
73
 #### 方式二:指定 jar 部署
81
 #### 方式二:指定 jar 部署
74
 
82
 
86
 
94
 
87
 ## 环境变量
95
 ## 环境变量
88
 
96
 
89
-`.env` 文件位于项目根目录和服务器 `/opt/iot-platform/.env`,包含所有敏感凭据
97
+`.env` 文件位于项目根目录和服务器 `/mnt/iot-platform/.env`,包含所有环境变量
90
 
98
 
91
 ```bash
99
 ```bash
92
 # MySQL
100
 # MySQL
95
 
103
 
96
 # Redis
104
 # Redis
97
 REDIS_PASSWORD=
105
 REDIS_PASSWORD=
106
+REDIS_HOST=172.21.185.173
98
 
107
 
99
 # MQTT
108
 # MQTT
100
 MQTT_USERNAME=...
109
 MQTT_USERNAME=...
110
 DRUID_PASSWORD=...
119
 DRUID_PASSWORD=...
111
 ```
120
 ```
112
 
121
 
113
-**注意**:`.env` 文件已加入 `.gitignore`,**切勿提交到 Git**。
114
-
115
 ## 服务器管理
122
 ## 服务器管理
116
 
123
 
117
 ```bash
124
 ```bash
118
 # 查看容器状态
125
 # 查看容器状态
119
-podman ps | grep iot-platform
126
+podman ps
120
 
127
 
121
 # 查看实时日志
128
 # 查看实时日志
122
 podman logs -f iot-platform
129
 podman logs -f iot-platform
125
 podman logs --tail 100 iot-platform
132
 podman logs --tail 100 iot-platform
126
 
133
 
127
 # 查看宿主机上的日志文件(和容器内同步)
134
 # 查看宿主机上的日志文件(和容器内同步)
128
-tail -f /opt/iot-platform/logs/iot-platform.$(date +%Y-%m-%d).*.log
135
+tail -f /mnt/iot-platform/logs/iot-platform.$(date +%Y-%m-%d).*.log
129
 
136
 
130
 # 停止容器
137
 # 停止容器
131
 podman stop iot-platform
138
 podman stop iot-platform
141
 
148
 
142
 ```bash
149
 ```bash
143
 # 在服务器上执行
150
 # 在服务器上执行
144
-bash /opt/iot-platform/bin/health-check.sh localhost 8887 30
151
+bash /mnt/iot-platform/bin/health-check.sh localhost 8887 30
145
 
152
 
146
 # 或从本地检查
153
 # 或从本地检查
147
 curl -s http://47.104.204.180:8887/actuator/health
154
 curl -s http://47.104.204.180:8887/actuator/health
153
 
160
 
154
 ## 回滚
161
 ## 回滚
155
 
162
 
156
-如果部署失败,`deploy.sh` 会自动回滚到上一个版本。
157
-
158
-手动回滚:
163
+部署失败时容器会保留用于排查,需手动回滚:
159
 
164
 
160
 ```bash
165
 ```bash
161
 ssh root@47.104.204.180
166
 ssh root@47.104.204.180
164
 podman stop iot-platform && podman rm iot-platform
169
 podman stop iot-platform && podman rm iot-platform
165
 
170
 
166
 # 恢复旧版本 jar
171
 # 恢复旧版本 jar
167
-ls /opt/iot-platform/backup/          # 查看可用备份
168
-cp /opt/iot-platform/backup/iot-platform-XXXX.jar /opt/iot-platform/iot-platform.jar
172
+ls /mnt/iot-platform/backup/          # 查看可用备份
173
+cp /mnt/iot-platform/backup/iot-platform-XXXX.jar /mnt/iot-platform/iot-platform.jar
169
 
174
 
170
 # 重新构建镜像并启动
175
 # 重新构建镜像并启动
171
-cd /opt/iot-platform && podman build -t iot-platform:latest .
176
+cd /mnt/iot-platform && podman build -t iot-platform:latest .
172
 podman run -d \
177
 podman run -d \
173
     --name iot-platform \
178
     --name iot-platform \
174
-    --network host \
179
+    --network bridge \
175
     --restart unless-stopped \
180
     --restart unless-stopped \
176
-    -v /opt/iot-platform/logs:/opt/iot-platform/logs \
181
+    -p 8887:8887 \
182
+    -v /mnt/iot-platform/logs:/opt/iot-platform/logs \
177
     localhost/iot-platform:latest
183
     localhost/iot-platform:latest
178
 ```
184
 ```
179
 
185
 
187
 | `Dockerfile` | 容器镜像构建定义 |
193
 | `Dockerfile` | 容器镜像构建定义 |
188
 | `start-container.sh` | 容器内启动脚本(加载 .env) |
194
 | `start-container.sh` | 容器内启动脚本(加载 .env) |
189
 | `iot-platform.service` | systemd 服务定义(已废弃,保留备用) |
195
 | `iot-platform.service` | systemd 服务定义(已废弃,保留备用) |
196
+| `config/taos.cfg` | TDengine 服务端配置 |
197
+| `config/explorer.toml` | taos-explorer 配置 |
198
+| `config/tdengine-explorer.conf` | nginx 代理配置 |

Loading…
Annulla
Salva