Files
user-system/docs/runbooks/02-service-shutdown.md
long-agent 3b0bcf0ff7 fix: P0问题修复 - JWT配置、安全扫描、备份、Runbook
P0 问题修复(按照 gap analysis):

1. JWT密钥配置修复
   - config.yaml 移除占位符,改为空字符串
   - 添加测试验证 JWT_SECRET 环境变量覆盖功能

2. Docker 部署完善
   - 添加 deploy.resources 限制(内存 512M,CPU 0.5)
   - 添加 healthcheck 健康检查
   - 添加 restart: unless-stopped 重启策略

3. 安全扫描集成
   - 创建 scripts/security/run-gosec.sh 安全扫描脚本
   - 创建 scripts/security/workflow-template.yml CI工作流模板
   - 运行 gosec 扫描发现 6 个 HIGH 级别整数溢出问题

4. 备份自动化
   - 创建 scripts/backup/backup.sh 自动备份脚本
   - 支持 SQLite 数据库和配置文件备份
   - 支持备份验证、自动清理、恢复功能

5. Runbook 文档
   - 创建 docs/runbooks/ 目录
   - 添加 4 个核心 Runbook:服务启动、服务停止、备份恢复、日志分析
   - 添加 README.md 索引文档
2026-04-08 22:31:43 +08:00

1.8 KiB

服务停止 Runbook

触发条件

  • 计划维护
  • 紧急故障处理
  • 服务器关机

警告

停止服务前请确保:

  • 已通知相关人员
  • 已备份最新数据
  • 已记录当前操作

停止步骤

1. 通知相关人员

在停止服务前,通知:

  • 管理员
  • 开发团队
  • 依赖该服务的下游系统

2. 备份数据(可选)

如果是有计划的维护,建议先备份:

# 执行备份
./scripts/backup/backup.sh

# 验证备份
./scripts/backup/backup.sh --verify

# 列出备份
./scripts/backup/backup.sh --list

3. 停止服务

# 优雅停止(等待现有请求处理完成)
docker compose stop

# 或者强制停止(立即终止)
docker compose kill

4. 确认服务已停止

# 检查容器状态
docker compose ps

# 预期输出:没有运行的容器

5. 清理资源(如果需要)

# 停止并移除容器(保留数据卷)
docker compose down

# 完全清理(包括数据卷 - 会丢失数据!)
docker compose down -v

维护期间的替代方案

如果需要短时间维护,可以:

  1. 使用维护页面

    # 配置 nginx 返回维护页面
    # 参考 nginx 配置文档
    
  2. 切换到备用服务器

    # 在备用服务器启动服务
    docker compose -f docker-compose.backup.yml up -d
    

回滚步骤

停止后重新启动:

# 重新启动
docker compose up -d

# 验证服务
curl http://localhost:8080/api/v1/health

紧急停止

如果遇到紧急安全事件:

# 立即停止所有容器
docker compose kill

# 阻止外部访问(防火墙)
sudo ufw deny 8080/tcp

联系人

  • 运维负责人:[填写]
  • 安全团队:[填写]