数据解析模块
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
humanleft a5b7e0823f feat(deploy): 容器网络架构改造 + 配置纳入版本控制 hace 2 semanas
..
config feat(deploy): 容器网络架构改造 + 配置纳入版本控制 hace 2 semanas
.env feat(deploy): 容器网络架构改造 + 配置纳入版本控制 hace 2 semanas
Dockerfile feat(deploy): 容器网络架构改造 + 配置纳入版本控制 hace 2 semanas
README.md docs: 更新部署文档为容器化方案 hace 2 semanas
deploy.sh feat(deploy): 容器网络架构改造 + 配置纳入版本控制 hace 2 semanas
health-check.sh refactor: P0-P2 security, quality, deployment overhaul hace 4 semanas
iot-platform.service refactor: P0-P2 security, quality, deployment overhaul hace 4 semanas
setup-server.sh refactor: P0-P2 security, quality, deployment overhaul hace 4 semanas
start-container.sh feat(deploy): 容器网络架构改造 + 配置纳入版本控制 hace 2 semanas

README.md

IoT Platform 部署文档

概述

本项目使用 Podman 容器化部署,通过 deploy.sh 脚本实现一键构建、上传、构建镜像、健康检查和自动回滚。

服务器环境

  • 服务器: online180 (47.104.204.180)
  • OS: Alibaba Cloud Linux 3
  • 容器运行时: Podman 4.9.4 (docker 兼容)
  • Java: OpenJDK 1.8 (容器内)
  • 安装目录: /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.envstart-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

流程:

  1. 本地执行 mvn clean package
  2. 上传 jar 到服务器
  3. 备份当前版本(带时间戳)
  4. 停止并删除旧容器
  5. 替换 jar 并构建新镜像
  6. 启动容器(host 网络模式)
  7. 健康检查(/actuator/health
  8. 失败则自动回滚到上一个版本

方式二:指定 jar 部署

cd deploy
./deploy.sh --jar ../iot-platform/target/iot-platform.jar

方式三:CI/CD 构建后部署

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

健康检查策略:

  1. 优先检查 /actuator/health(Spring Boot Actuator)
  2. 如果 Actuator 未启用,降级为 TCP 端口监听检查

回滚

如果部署失败,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 服务定义(已废弃,保留备用)