# QAUP 系统 Docker 部署

## 重要说明

**工作目录**: 请确保在 `deploy` 目录下执行所有部署命令。

```bash
cd QAUP-Management/deploy  # 进入部署目录
./test-paths.sh           # 验证路径配置（推荐）
```

## 快速开始

### 数据准备（首次部署必需）

```bash
# 全新部署（使用默认数据）
./docker/postgres/db-manager.sh prepare-default

# 或从现有系统迁移
./docker/postgres/db-manager.sh prepare-export
```

### 一键部署

```bash
# 完整部署
./deploy.sh install

# 查看系统状态
./docker/ops-manager.sh overview
```

### 基本操作

```bash
# 启动服务
./deploy.sh start

# 停止服务
./deploy.sh stop

# 重启服务
./deploy.sh restart

# 查看状态
./deploy.sh status
```

## 系统架构

```
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Nginx 容器    │    │   应用容器      │    │  PostgreSQL     │
│   (反向代理)    │───▶│  (Spring Boot)  │───▶│   (数据库)      │
│   端口: 80/443  │    │   端口: 8080    │    │   端口: 5432    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                              │
                              ▼
                       ┌─────────────────┐
                       │   Redis 容器    │
                       │    (缓存)       │
                       │   端口: 6379    │
                       └─────────────────┘
```

## 目录结构

```
QAUP-Management/
├── docker/                    # Docker 配置和脚本
│   ├── nginx/                 # Nginx 配置
│   ├── postgres/              # PostgreSQL 配置
│   ├── *.sh                   # 管理脚本
│   └── *.yml                  # 配置文件
├── config/                    # 应用配置
├── data/                      # 数据目录
│   ├── postgres/              # 数据库数据
│   ├── redis/                 # Redis 数据
│   └── uploads/               # 上传文件
├── logs/                      # 日志目录
├── backup/                    # 备份目录
├── ssl/                       # SSL 证书
├── docker-compose*.yml        # Docker Compose 配置
├── .env                       # 环境变量
└── deploy.sh                  # 主部署脚本
```

## 管理脚本

### 主要脚本

| 脚本                       | 功能       | 示例                               |
| -------------------------- | ---------- | ---------------------------------- |
| `deploy.sh`                | 主部署脚本 | `./deploy.sh install`              |
| `docker/ops-manager.sh`    | 运维管理   | `./docker/ops-manager.sh overview` |
| `docker/monitor.sh`        | 系统监控   | `./docker/monitor.sh watch`        |
| `docker/backup-restore.sh` | 备份恢复   | `./docker/backup-restore.sh full`  |
| `docker/log-manager.sh`    | 日志管理   | `./docker/log-manager.sh view app` |

### 配置脚本

| 脚本                             | 功能     | 示例                                 |
| -------------------------------- | -------- | ------------------------------------ |
| `docker/config-manager.sh`       | 配置管理 | `./docker/config-manager.sh init`    |
| `docker/security-setup.sh`       | 安全配置 | `./docker/security-setup.sh all`     |
| `docker/performance-tuning.sh`   | 性能优化 | `./docker/performance-tuning.sh all` |
| `docker/validate-environment.sh` | 环境验证 | `./docker/validate-environment.sh`   |

### 测试脚本

| 脚本                         | 功能     | 示例                                |
| ---------------------------- | -------- | ----------------------------------- |
| `docker/integration-test.sh` | 集成测试 | `./docker/integration-test.sh full` |
| `docker/alert-manager.sh`    | 告警管理 | `./docker/alert-manager.sh check`   |

## 常用操作

### 系统管理

```bash
# 查看系统概览
./docker/ops-manager.sh overview

# 快速诊断
./docker/ops-manager.sh diagnosis

# 健康检查
./docker/ops-manager.sh health-check

# 性能分析
./docker/ops-manager.sh performance

# 安全检查
./docker/ops-manager.sh security

# 系统清理
./docker/ops-manager.sh cleanup
```

### 服务管理

```bash
# 重启特定服务
./docker/ops-manager.sh service restart app

# 查看服务状态
./docker/ops-manager.sh service status

# 启动所有服务
./docker/ops-manager.sh service start all
```

### 日志管理

```bash
# 查看所有日志
./docker/ops-manager.sh logs all

# 查看应用日志
./docker/ops-manager.sh logs app 100

# 实时监控日志
./docker/log-manager.sh monitor app

# 分析错误日志
./docker/log-manager.sh analyze
```

### 备份管理

```bash
# 查看备份状态
./docker/ops-manager.sh backup status

# 创建完整备份
./docker/ops-manager.sh backup create

# 列出所有备份
./docker/ops-manager.sh backup list

# 清理旧备份
./docker/ops-manager.sh backup cleanup
```

### 监控和告警

```bash
# 实时监控
./docker/monitor.sh watch

# 检查告警
./docker/alert-manager.sh check

# 持续监控
./docker/alert-manager.sh monitor 300

# 查看告警历史
./docker/alert-manager.sh history
```

## 配置管理

### 环境配置

主要配置文件：`.env`

```bash
# 数据库配置
POSTGRES_PASSWORD=强密码
APP_DB_PASSWORD=强密码

# 服务器配置
SERVER_NAME=your-domain.com
NGINX_PORT=80

# 其他配置...
```

### 配置操作

```bash
# 初始化配置
./docker/config-manager.sh init

# 验证配置
./docker/config-manager.sh validate

# 备份配置
./docker/config-manager.sh backup

# 生成配置
./docker/config-manager.sh generate prod
```

## 性能优化

### 自动优化

```bash
# 应用所有优化
./docker/performance-tuning.sh all

# 仅优化 JVM
./docker/performance-tuning.sh jvm

# 仅优化数据库
./docker/performance-tuning.sh database
```

### 手动优化

1. **JVM 参数调优**：编辑 `.env` 中的 `JVM_OPTS`
2. **数据库优化**：修改 `docker/postgres/postgresql.conf`
3. **Nginx 优化**：调整 `docker/nginx/nginx.conf`

## 安全配置

### 安全设置

```bash
# 应用所有安全配置
./docker/security-setup.sh all

# 配置 SSL/TLS
./docker/security-setup.sh ssl

# 配置防火墙
sudo ./docker/security-setup.sh firewall

# 配置文件权限
./docker/security-setup.sh permissions
```

### 安全检查

```bash
# 安全检查
./docker/ops-manager.sh security

# 密码强度检查
./docker/secrets-manager.sh check

# 生成强密码
./docker/secrets-manager.sh generate
```

## 故障排除

### 常见问题

1. **容器无法启动**
   ```bash
   # 查看容器日志
   docker logs qaup-app
   
   # 检查资源使用
   docker stats
   
   # 重启服务
   ./deploy.sh restart
   ```

2. **服务无响应**
   ```bash
   # 健康检查
   ./docker/ops-manager.sh health-check
   
   # 查看系统状态
   ./docker/ops-manager.sh diagnosis
   
   # 检查网络连接
   curl -I http://localhost/health
   ```

3. **性能问题**
   ```bash
   # 性能分析
   ./docker/ops-manager.sh performance
   
   # 应用性能优化
   ./docker/performance-tuning.sh all
   
   # 监控资源使用
   ./docker/monitor.sh resources
   ```

### 诊断工具

```bash
# 快速诊断
./docker/ops-manager.sh diagnosis

# 完整集成测试
./docker/integration-test.sh full

# 环境验证
./docker/validate-environment.sh

# 生成运维报告
./docker/ops-manager.sh report
```

## 更新和维护

### 系统更新

```bash
# 零停机更新
./docker/zero-downtime-update.sh full

# 滚动更新
./docker/zero-downtime-update.sh rolling

# 蓝绿部署
./docker/zero-downtime-update.sh blue-green
```

### 定期维护

```bash
# 每日维护
./docker/ops-manager.sh diagnosis
./docker/ops-manager.sh backup create

# 每周维护
./docker/ops-manager.sh cleanup
./docker/log-manager.sh cleanup 30

# 每月维护
./docker/ops-manager.sh security
./docker/performance-tuning.sh all
```

## 离线部署

### 准备离线包

在有网络的环境中：

```bash
# 准备镜像
./docker/prepare-offline-images.sh

# 创建部署包
# (参考 docs/离线部署指南.md)
```

### 离线安装

在内网环境中：

```bash
# 解压部署包
tar -xzf qaup-offline-deploy-*.tar.gz

# 导入镜像
./docker/load-images.sh

# 安装系统
./install.sh
./deploy.sh install
```

## 监控和告警

### 监控设置

```bash
# 启动持续监控
./docker/monitor.sh watch 60 &

# 启动告警监控
./docker/alert-manager.sh monitor 300 &

# 配置日志轮转
./docker/log-manager.sh setup
```

### 告警配置

编辑 `docker/healthcheck.yml` 配置告警规则和阈值。

## 支持和文档

### 详细文档

- [部署指南](docs/部署指南.md)
- [离线部署指南](docs/离线部署指南.md)
- [故障排除](docs/故障排除.md)

### 获取帮助

```bash
# 查看脚本帮助
./deploy.sh help
./docker/ops-manager.sh help
./docker/monitor.sh help

# 查看系统状态
./docker/ops-manager.sh overview

# 运行诊断
./docker/ops-manager.sh diagnosis
```

### 联系支持

如遇问题，请提供：
1. 系统信息：`./docker/ops-manager.sh report`
2. 错误日志：`./docker/log-manager.sh analyze`
3. 容器状态：`docker ps -a`
4. 配置信息：`.env` 文件（隐藏敏感信息）

---

**注意**：本文档持续更新，请定期查看最新版本。