Переглянути джерело

docs: 更新部署文档为容器化方案

- deploy/README.md: systemd → Podman 容器化部署
- CLAUDE.md: 更新部署命令、TDengine URL、.env 加载方式
mqy20260511
humanleft 2 тижднів тому
джерело
коміт
fd11440482
2 змінених файлів з 65 додано та 34 видалено
  1. 8
    8
      CLAUDE.md
  2. 57
    26
      deploy/README.md

+ 8
- 8
CLAUDE.md Переглянути файл

@@ -55,7 +55,7 @@ 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://localhost:6030/`
58
+- Connects to `jdbc:TAOS://127.0.0.1:6031/`
59 59
 - Super-table pattern with column caching (`stableColumnCache`)
60 60
 
61 61
 ### Redis
@@ -71,7 +71,7 @@ iot-platform/
71 71
 - `iot-platform/src/main/resources/application.yml` — Main config (port 8887, Redis, MyBatis, Actuator)
72 72
 - `iot-platform/src/main/resources/application-druid.yml` — Database connection (Druid pool, master/slave)
73 73
 - `iot-platform/src/main/resources/logback-spring.xml` — Logging config with rolling
74
-- `.env` — Environment variables (passwords, credentials) loaded by systemd or start.sh
74
+- `.env` — Environment variables (passwords, credentials) loaded by start-container.sh
75 75
 
76 76
 ## Environment Variables
77 77
 
@@ -134,18 +134,18 @@ Implementations:
134 134
 
135 135
 ## Deployment
136 136
 
137
-Production deployment uses systemd on online180 (47.104.204.180).
137
+Production deployment uses Podman containers on online180 (47.104.204.180).
138 138
 
139 139
 ```bash
140 140
 # Deploy from local
141 141
 cd deploy
142
-./deploy.sh --build          # Build and deploy
142
+./deploy.sh --build          # Build, build image, and deploy
143 143
 ./deploy.sh --jar <path>     # Deploy specific jar
144 144
 
145
-# Server management
146
-systemctl status iot-platform
147
-systemctl restart iot-platform
148
-journalctl -u iot-platform -f
145
+# Container management
146
+podman ps | grep iot-platform
147
+podman logs -f iot-platform
148
+podman restart iot-platform
149 149
 ```
150 150
 
151 151
 See `deploy/README.md` for full deployment documentation.

+ 57
- 26
deploy/README.md Переглянути файл

@@ -2,42 +2,53 @@
2 2
 
3 3
 ## 概述
4 4
 
5
-本项目使用 systemd 管理进程,通过 `deploy.sh` 脚本实现一键构建、上传、备份、健康检查和自动回滚。
5
+本项目使用 Podman 容器化部署,通过 `deploy.sh` 脚本实现一键构建、上传、构建镜像、健康检查和自动回滚。
6 6
 
7 7
 ## 服务器环境
8 8
 
9 9
 - **服务器**: online180 (47.104.204.180)
10 10
 - **OS**: Alibaba Cloud Linux 3
11
-- **Java**: OpenJDK 1.8.0_412
11
+- **容器运行时**: Podman 4.9.4 (docker 兼容)
12
+- **Java**: OpenJDK 1.8 (容器内)
12 13
 - **安装目录**: `/opt/iot-platform/`
13
-- **服务名称**: `iot-platform`
14
+- **容器名称**: `iot-platform`
14 15
 
15 16
 ## 目录结构
16 17
 
17 18
 ```
18 19
 /opt/iot-platform/
19 20
 ├── iot-platform.jar          # 当前运行版本
21
+├── Dockerfile                # 容器镜像构建定义
22
+├── start-container.sh        # 容器启动脚本(加载 .env)
20 23
 ├── .env                      # 环境变量(密码、凭据)
21 24
 ├── backup/                   # 版本备份(自动创建)
22 25
 ├── bin/
23 26
 │   ├── deploy.sh             # 一键部署脚本(本地运行)
24 27
 │   └── health-check.sh       # 健康检查脚本
25 28
 ├── config/                   # 线上专属配置
26
-└── logs/                     # 日志输出
29
+└── logs/                     # 日志输出(宿主机挂载)
27 30
 ```
28 31
 
29 32
 ## 快速开始
30 33
 
31 34
 ### 首次部署(服务器初始化)
32 35
 
33
-如果服务器上还没有安装 systemd 服务,执行初始化:
36
+确保服务器上已有 `/opt/iot-platform/` 目录,并包含 `Dockerfile`、`.env`、`start-container.sh`:
37
+
38
+```bash
39
+# 从本地同步必要文件到服务器
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"
45
+```
46
+
47
+然后执行首次部署:
34 48
 
35 49
 ```bash
36 50
 cd deploy
37
-scp setup-server.sh root@47.104.204.180:/tmp/
38
-scp iot-platform.service root@47.104.204.180:/tmp/
39
-scp ../.env root@47.104.204.180:/tmp/iot-platform.env
40
-ssh root@47.104.204.180 "chmod +x /tmp/setup-server.sh && /tmp/setup-server.sh"
51
+./deploy.sh --build
41 52
 ```
42 53
 
43 54
 ### 日常部署
@@ -53,9 +64,9 @@ cd deploy
53 64
 1. 本地执行 `mvn clean package`
54 65
 2. 上传 jar 到服务器
55 66
 3. 备份当前版本(带时间戳)
56
-4. 停止 systemd 服务
57
-5. 替换 jar
58
-6. 启动服务
67
+4. 停止并删除旧容器
68
+5. 替换 jar 并构建新镜像
69
+6. 启动容器(host 网络模式)
59 70
 7. 健康检查(`/actuator/health`)
60 71
 8. 失败则自动回滚到上一个版本
61 72
 
@@ -104,20 +115,26 @@ DRUID_PASSWORD=...
104 115
 ## 服务器管理
105 116
 
106 117
 ```bash
107
-# 查看状态
108
-systemctl status iot-platform
118
+# 查看容器状态
119
+podman ps | grep iot-platform
109 120
 
110
-# 重启
111
-systemctl restart iot-platform
121
+# 查看实时日志
122
+podman logs -f iot-platform
112 123
 
113
-# 停止
114
-systemctl stop iot-platform
124
+# 查看最后 100 行日志
125
+podman logs --tail 100 iot-platform
115 126
 
116
-# 查看日志
117
-journalctl -u iot-platform -f
127
+# 查看宿主机上的日志文件(和容器内同步)
128
+tail -f /opt/iot-platform/logs/iot-platform.$(date +%Y-%m-%d).*.log
118 129
 
119
-# 查看历史日志
120
-journalctl -u iot-platform --since "1 hour ago"
130
+# 停止容器
131
+podman stop iot-platform
132
+
133
+# 删除容器
134
+podman rm iot-platform
135
+
136
+# 重启容器
137
+podman restart iot-platform
121 138
 ```
122 139
 
123 140
 ## 健康检查
@@ -142,10 +159,22 @@ curl -s http://47.104.204.180:8887/actuator/health
142 159
 
143 160
 ```bash
144 161
 ssh root@47.104.204.180
145
-systemctl stop iot-platform
162
+
163
+# 停止并删除当前容器
164
+podman stop iot-platform && podman rm iot-platform
165
+
166
+# 恢复旧版本 jar
146 167
 ls /opt/iot-platform/backup/          # 查看可用备份
147 168
 cp /opt/iot-platform/backup/iot-platform-XXXX.jar /opt/iot-platform/iot-platform.jar
148
-systemctl start iot-platform
169
+
170
+# 重新构建镜像并启动
171
+cd /opt/iot-platform && podman build -t iot-platform:latest .
172
+podman run -d \
173
+    --name iot-platform \
174
+    --network host \
175
+    --restart unless-stopped \
176
+    -v /opt/iot-platform/logs:/opt/iot-platform/logs \
177
+    localhost/iot-platform:latest
149 178
 ```
150 179
 
151 180
 ## 配置文件说明
@@ -153,6 +182,8 @@ systemctl start iot-platform
153 182
 | 文件 | 说明 |
154 183
 |------|------|
155 184
 | `deploy.sh` | 一键部署脚本(本地执行) |
156
-| `setup-server.sh` | 服务器初始化脚本(服务器执行) |
185
+| `setup-server.sh` | 服务器初始化脚本 |
157 186
 | `health-check.sh` | 健康检查脚本 |
158
-| `iot-platform.service` | systemd 服务定义 |
187
+| `Dockerfile` | 容器镜像构建定义 |
188
+| `start-container.sh` | 容器内启动脚本(加载 .env) |
189
+| `iot-platform.service` | systemd 服务定义(已废弃,保留备用) |

Завантаження…
Відмінити
Зберегти