|
|
@@ -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 代理配置 |
|