Browse Source

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 weeks ago
parent
commit
08860c245f
2 changed files with 39 additions and 29 deletions
  1. 4
    3
      CLAUDE.md
  2. 35
    26
      deploy/README.md

+ 4
- 3
CLAUDE.md View File

@@ -9,7 +9,7 @@ This is an **IoT Energy Storage Management Platform** (储能运营平台), orig
9 9
 - **Backend**: Spring Boot 2.5.15, Java 8, Spring Security 5.7.12, JWT authentication
10 10
 - **Frontend**: Vue 2 + Element UI (separate repository, not in this workspace)
11 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 13
 - **Message Broker**: MQTT (EMQX on 47.104.204.180:1883)
14 14
 
15 15
 ## Build & Run Commands
@@ -55,11 +55,11 @@ iot-platform/
55 55
 ### TDengine (Time-Series Database)
56 56
 - Used for high-frequency IoT telemetry ingestion
57 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 59
 - Super-table pattern with column caching (`stableColumnCache`)
60 60
 
61 61
 ### Redis
62
-- Host: `localhost:6379`
62
+- Host: `${REDIS_HOST:localhost}:6379` (production overrides via `REDIS_HOST` env var)
63 63
 - Key patterns (defined in `common/RedisKeys.java`):
64 64
   - `DSB:active:devices` — Set of active IoT device keys
65 65
   - `DSB:<controllerId>:<metricName>` — Hash storing device telemetry
@@ -81,6 +81,7 @@ All sensitive credentials are externalized to `.env`:
81 81
 MYSQL_USERNAME=root
82 82
 MYSQL_PASSWORD="..."
83 83
 REDIS_PASSWORD=
84
+REDIS_HOST=172.21.185.173
84 85
 MQTT_USERNAME=...
85 86
 MQTT_PASSWORD=...
86 87
 TDENGINE_USERNAME=root

+ 35
- 26
deploy/README.md View File

@@ -2,7 +2,7 @@
2 2
 
3 3
 ## 概述
4 4
 
5
-本项目使用 Podman 容器化部署,通过 `deploy.sh` 脚本实现一键构建、上传、构建镜像、健康检查和自动回滚
5
+本项目使用 Podman 容器化部署,通过 `deploy.sh` 脚本实现一键构建、上传、构建镜像、健康检查。
6 6
 
7 7
 ## 服务器环境
8 8
 
@@ -10,13 +10,13 @@
10 10
 - **OS**: Alibaba Cloud Linux 3
11 11
 - **容器运行时**: Podman 4.9.4 (docker 兼容)
12 12
 - **Java**: OpenJDK 1.8 (容器内)
13
-- **安装目录**: `/opt/iot-platform/`
13
+- **安装目录**: `/mnt/iot-platform/`(兼容软链接 `/opt/iot-platform`
14 14
 - **容器名称**: `iot-platform`
15 15
 
16 16
 ## 目录结构
17 17
 
18 18
 ```
19
-/opt/iot-platform/
19
+/mnt/iot-platform/
20 20
 ├── iot-platform.jar          # 当前运行版本
21 21
 ├── Dockerfile                # 容器镜像构建定义
22 22
 ├── start-container.sh        # 容器启动脚本(加载 .env)
@@ -29,19 +29,27 @@
29 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 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,13 +70,13 @@ cd deploy
62 70
 
63 71
 流程:
64 72
 1. 本地执行 `mvn clean package`
65
-2. 上传 jar 到服务器
73
+2. 上传 jar 到服务器 `/mnt/iot-platform/`
66 74
 3. 备份当前版本(带时间戳)
67 75
 4. 停止并删除旧容器
68 76
 5. 替换 jar 并构建新镜像
69
-6. 启动容器(host 网络模式
77
+6. 启动容器(bridge 网络模式,端口映射 `8887:8887`
70 78
 7. 健康检查(`/actuator/health`)
71
-8. 失败则自动回滚到上一个版本
79
+8. 失败时保留容器用于排查(不再自动回滚)
72 80
 
73 81
 #### 方式二:指定 jar 部署
74 82
 
@@ -86,7 +94,7 @@ cd deploy
86 94
 
87 95
 ## 环境变量
88 96
 
89
-`.env` 文件位于项目根目录和服务器 `/opt/iot-platform/.env`,包含所有敏感凭据
97
+`.env` 文件位于项目根目录和服务器 `/mnt/iot-platform/.env`,包含所有环境变量
90 98
 
91 99
 ```bash
92 100
 # MySQL
@@ -95,6 +103,7 @@ MYSQL_PASSWORD="..."
95 103
 
96 104
 # Redis
97 105
 REDIS_PASSWORD=
106
+REDIS_HOST=172.21.185.173
98 107
 
99 108
 # MQTT
100 109
 MQTT_USERNAME=...
@@ -110,13 +119,11 @@ DRUID_USERNAME=ruoyi
110 119
 DRUID_PASSWORD=...
111 120
 ```
112 121
 
113
-**注意**:`.env` 文件已加入 `.gitignore`,**切勿提交到 Git**。
114
-
115 122
 ## 服务器管理
116 123
 
117 124
 ```bash
118 125
 # 查看容器状态
119
-podman ps | grep iot-platform
126
+podman ps
120 127
 
121 128
 # 查看实时日志
122 129
 podman logs -f iot-platform
@@ -125,7 +132,7 @@ podman logs -f iot-platform
125 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 138
 podman stop iot-platform
@@ -141,7 +148,7 @@ podman restart iot-platform
141 148
 
142 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 154
 curl -s http://47.104.204.180:8887/actuator/health
@@ -153,9 +160,7 @@ 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 165
 ```bash
161 166
 ssh root@47.104.204.180
@@ -164,16 +169,17 @@ ssh root@47.104.204.180
164 169
 podman stop iot-platform && podman rm iot-platform
165 170
 
166 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 177
 podman run -d \
173 178
     --name iot-platform \
174
-    --network host \
179
+    --network bridge \
175 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 183
     localhost/iot-platform:latest
178 184
 ```
179 185
 
@@ -187,3 +193,6 @@ podman run -d \
187 193
 | `Dockerfile` | 容器镜像构建定义 |
188 194
 | `start-container.sh` | 容器内启动脚本(加载 .env) |
189 195
 | `iot-platform.service` | systemd 服务定义(已废弃,保留备用) |
196
+| `config/taos.cfg` | TDengine 服务端配置 |
197
+| `config/explorer.toml` | taos-explorer 配置 |
198
+| `config/tdengine-explorer.conf` | nginx 代理配置 |

Loading…
Cancel
Save