# 服务停止 Runbook

## 触发条件
- 计划维护
- 紧急故障处理
- 服务器关机

## 警告

**停止服务前请确保：**
- 已通知相关人员
- 已备份最新数据
- 已记录当前操作

## 停止步骤

### 1. 通知相关人员

在停止服务前，通知：
- [ ] 管理员
- [ ] 开发团队
- [ ] 依赖该服务的下游系统

### 2. 备份数据（可选）

如果是有计划的维护，建议先备份：

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

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

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

### 3. 停止服务

```bash
# 优雅停止（等待现有请求处理完成）
docker compose stop

# 或者强制停止（立即终止）
docker compose kill
```

### 4. 确认服务已停止

```bash
# 检查容器状态
docker compose ps

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

### 5. 清理资源（如果需要）

```bash
# 停止并移除容器（保留数据卷）
docker compose down

# 完全清理（包括数据卷 - 会丢失数据！）
docker compose down -v
```

## 维护期间的替代方案

如果需要短时间维护，可以：

1. **使用维护页面**
   ```bash
   # 配置 nginx 返回维护页面
   # 参考 nginx 配置文档
   ```

2. **切换到备用服务器**
   ```bash
   # 在备用服务器启动服务
   docker compose -f docker-compose.backup.yml up -d
   ```

## 回滚步骤

停止后重新启动：

```bash
# 重新启动
docker compose up -d

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

## 紧急停止

如果遇到紧急安全事件：

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

# 阻止外部访问（防火墙）
sudo ufw deny 8080/tcp
```

## 联系人

- 运维负责人：[填写]
- 安全团队：[填写]
