|
|
2 주 전 | |
|---|---|---|
| .. | ||
| README.md | 2 주 전 | |
| deploy.sh | 2 주 전 | |
| health-check.sh | 4 주 전 | |
| iot-platform.service | 4 주 전 | |
| setup-server.sh | 4 주 전 | |
本项目使用 Podman 容器化部署,通过 deploy.sh 脚本实现一键构建、上传、构建镜像、健康检查和自动回滚。
/opt/iot-platform/iot-platform/opt/iot-platform/
├── iot-platform.jar # 当前运行版本
├── Dockerfile # 容器镜像构建定义
├── start-container.sh # 容器启动脚本(加载 .env)
├── .env # 环境变量(密码、凭据)
├── backup/ # 版本备份(自动创建)
├── bin/
│ ├── deploy.sh # 一键部署脚本(本地运行)
│ └── health-check.sh # 健康检查脚本
├── config/ # 线上专属配置
└── logs/ # 日志输出(宿主机挂载)
确保服务器上已有 /opt/iot-platform/ 目录,并包含 Dockerfile、.env、start-container.sh:
# 从本地同步必要文件到服务器
scp deploy/setup-server.sh root@47.104.204.180:/opt/iot-platform/
scp .env root@47.104.204.180:/opt/iot-platform/
scp Dockerfile root@47.104.204.180:/opt/iot-platform/
scp start-container.sh root@47.104.204.180:/opt/iot-platform/
ssh root@47.104.204.180 "chmod +x /opt/iot-platform/start-container.sh"
然后执行首次部署:
cd deploy
./deploy.sh --build
cd deploy
./deploy.sh --build
流程:
mvn clean package/actuator/health)cd deploy
./deploy.sh --jar ../iot-platform/target/iot-platform.jar
cd deploy
./deploy.sh --jar /path/to/ci/artifacts/iot-platform.jar
.env 文件位于项目根目录和服务器 /opt/iot-platform/.env,包含所有敏感凭据:
# MySQL
MYSQL_USERNAME=root
MYSQL_PASSWORD="..."
# Redis
REDIS_PASSWORD=
# MQTT
MQTT_USERNAME=...
MQTT_PASSWORD=...
# TDengine
TDENGINE_USERNAME=root
TDENGINE_PASSWORD=taosdata
# Druid 监控
DRUID_STAT_ENABLED=false
DRUID_USERNAME=ruoyi
DRUID_PASSWORD=...
注意:.env 文件已加入 .gitignore,切勿提交到 Git。
# 查看容器状态
podman ps | grep iot-platform
# 查看实时日志
podman logs -f iot-platform
# 查看最后 100 行日志
podman logs --tail 100 iot-platform
# 查看宿主机上的日志文件(和容器内同步)
tail -f /opt/iot-platform/logs/iot-platform.$(date +%Y-%m-%d).*.log
# 停止容器
podman stop iot-platform
# 删除容器
podman rm iot-platform
# 重启容器
podman restart iot-platform
# 在服务器上执行
bash /opt/iot-platform/bin/health-check.sh localhost 8887 30
# 或从本地检查
curl -s http://47.104.204.180:8887/actuator/health
健康检查策略:
/actuator/health(Spring Boot Actuator)如果部署失败,deploy.sh 会自动回滚到上一个版本。
手动回滚:
ssh root@47.104.204.180
# 停止并删除当前容器
podman stop iot-platform && podman rm iot-platform
# 恢复旧版本 jar
ls /opt/iot-platform/backup/ # 查看可用备份
cp /opt/iot-platform/backup/iot-platform-XXXX.jar /opt/iot-platform/iot-platform.jar
# 重新构建镜像并启动
cd /opt/iot-platform && podman build -t iot-platform:latest .
podman run -d \
--name iot-platform \
--network host \
--restart unless-stopped \
-v /opt/iot-platform/logs:/opt/iot-platform/logs \
localhost/iot-platform:latest
| 文件 | 说明 |
|---|---|
deploy.sh |
一键部署脚本(本地执行) |
setup-server.sh |
服务器初始化脚本 |
health-check.sh |
健康检查脚本 |
Dockerfile |
容器镜像构建定义 |
start-container.sh |
容器内启动脚本(加载 .env) |
iot-platform.service |
systemd 服务定义(已废弃,保留备用) |