# TYAPI 生产环境部署指南 ## 🎯 **部署架构概览** ``` ┌─────────────────────────────────────────────────────────────┐ │ 生产环境架构 │ ├─────────────────────────────────────────────────────────────┤ │ Nginx (80/443) ──► TYAPI App (8080) ──► PostgreSQL (5432) │ │ │ │ │ │ │ │ └──► Redis (6379) │ │ │ │ └──► Jaeger (4317) │ │ │ └──► Jaeger UI (16686) │ │ └─────────────────────────────────────────────────────────────┘ 私有镜像仓库: docker-registry.tianyuanapi.com ``` ## 📋 **部署清单** ### ✅ **已创建的文件** - `Dockerfile` - 多阶段构建的生产级镜像 - `docker-compose.prod.yml` - 生产环境服务编排 - `.dockerignore` - Docker 构建忽略文件 - `deployments/docker/nginx.conf` - Nginx 反向代理配置 - `.env.production` - 生产环境配置模板 - `scripts/deploy.sh` - Linux/macOS 部署脚本 - `scripts/deploy.ps1` - Windows PowerShell 部署脚本 - `Makefile` - 新增生产环境相关命令 ### 🛠 **服务组件** 1. **PostgreSQL** - 主数据库 (生产优化配置) 2. **Redis** - 缓存和会话存储 (密码保护) 3. **TYAPI App** - 主应用程序 (生产模式) 4. **Jaeger** - 链路追踪 (生产级配置) 5. **Nginx** - 反向代理和负载均衡 6. **Prometheus** - 监控数据收集和存储 7. **Grafana** - 监控数据可视化仪表盘 8. **MinIO** - S3 兼容对象存储服务 9. **pgAdmin** - PostgreSQL 数据库管理工具 ## 🚀 **快速部署步骤** ### 1️⃣ **环境准备** ```bash # 确保服务器已安装 - Docker 20.10+ - Docker Compose 2.0+ - Git (可选) # 检查版本 docker --version docker-compose --version ``` ### 2️⃣ **获取代码** ```bash # 克隆项目到服务器 git clone tyapi-server cd tyapi-server # 或直接上传项目文件 ``` ### 3️⃣ **配置环境变量** ```bash # 复制配置模板 cp .env.production .env # 编辑配置文件 nano .env ``` **必须修改的关键配置:** ```bash # 数据库配置 DB_PASSWORD=your_secure_database_password_here # Redis配置 REDIS_PASSWORD=your_secure_redis_password_here # JWT密钥 (至少32位) JWT_SECRET=your_super_secure_jwt_secret_key_for_production_at_least_32_chars # Grafana管理员配置 GRAFANA_ADMIN_PASSWORD=your_secure_grafana_password_here # MinIO对象存储配置 MINIO_ROOT_PASSWORD=your_secure_minio_password_here # pgAdmin数据库管理配置 PGADMIN_PASSWORD=your_secure_pgadmin_password_here # 短信服务配置 SMS_ACCESS_KEY_ID=your_sms_access_key_id SMS_ACCESS_KEY_SECRET=your_sms_access_key_secret SMS_SIGN_NAME=your_sms_sign_name SMS_TEMPLATE_CODE=your_sms_template_code ``` ### 4️⃣ **执行部署** #### **Linux/macOS:** ```bash # 给脚本执行权限 chmod +x scripts/deploy.sh # 部署指定版本 ./scripts/deploy.sh v1.0.0 # 或部署最新版本 ./scripts/deploy.sh ``` #### **Windows:** ```powershell # 执行部署脚本 .\scripts\deploy.ps1 -Version "v1.0.0" # 或使用Makefile make docker-build-prod make docker-push-prod make prod-up ``` ## 📊 **部署脚本功能** ### 🔄 **自动化流程** 1. **环境检查** - 验证 Docker、docker-compose 等工具 2. **配置验证** - 检查关键配置项的安全性 3. **镜像构建** - 构建生产级 Docker 镜像 4. **镜像推送** - 推送到私有 Registry 5. **服务部署** - 启动所有生产服务 6. **健康检查** - 验证服务运行状态 7. **信息展示** - 显示访问地址和管理命令 ### 🛡 **安全特性** - **非 root 用户运行** - 容器内使用专用用户 - **资源限制** - CPU 和内存使用限制 - **健康检查** - 自动重启异常服务 - **网络隔离** - 独立的 Docker 网络 - **密码保护** - 数据库和 Redis 强制密码 - **SSL 就绪** - Nginx HTTPS 配置模板 ## 🎛 **管理命令** ### **通过 Makefile 管理:** ```bash # 构建生产镜像 make docker-build-prod # 推送到Registry make docker-push-prod # 启动生产服务 make prod-up # 停止生产服务 make prod-down # 查看服务状态 make prod-status # 查看实时日志 make prod-logs ``` ### **通过 docker-compose 管理:** ```bash # 启动所有服务 docker-compose -f docker-compose.prod.yml up -d # 停止所有服务 docker-compose -f docker-compose.prod.yml down # 查看服务状态 docker-compose -f docker-compose.prod.yml ps # 查看日志 docker-compose -f docker-compose.prod.yml logs -f # 重启特定服务 docker-compose -f docker-compose.prod.yml restart tyapi-app ``` ## 🌐 **服务访问地址** 部署成功后,可以通过以下地址访问服务: ### **核心服务** - **API 服务**: `http://your-server:8080` - **API 文档**: `http://your-server:8080/swagger/index.html` - **健康检查**: `http://your-server:8080/health` ### **监控和追踪** - **Grafana 仪表盘**: `http://your-server:3000` - **Prometheus 监控**: `http://your-server:9090` - **Jaeger 链路追踪**: `http://your-server:16686` ### **管理工具** - **pgAdmin 数据库管理**: `http://your-server:5050` - **MinIO 对象存储**: `http://your-server:9000` (API) - **MinIO 控制台**: `http://your-server:9001` (管理界面) ### **通过 Nginx 代理访问** 如果启用了 Nginx,也可以通过以下路径访问: - **根目录**: `http://your-server/` → 重定向到 API 文档 - **API 服务**: `http://your-server/api/` - **Grafana**: `http://your-server/grafana/` - **Prometheus**: `http://your-server/prometheus/` - **Jaeger**: `http://your-server/jaeger/` - **MinIO API**: `http://your-server/minio/` - **MinIO 控制台**: `http://your-server/minio-console/` - **pgAdmin**: `http://your-server/pgadmin/` ## 🔍 **监控和故障排除** ### **查看日志:** ```bash # 查看应用日志 docker-compose -f docker-compose.prod.yml logs tyapi-app # 查看数据库日志 docker-compose -f docker-compose.prod.yml logs postgres # 查看所有服务日志 docker-compose -f docker-compose.prod.yml logs ``` ### **健康检查:** ```bash # 检查服务状态 curl -f http://localhost:8080/health # 检查Jaeger curl -f http://localhost:16686 # 查看容器状态 docker ps ``` ### **常见问题:** 1. **镜像拉取失败** ```bash # 检查Registry连接 docker pull docker-registry.tianyuanapi.com/tyapi-server:latest ``` 2. **数据库连接失败** ```bash # 检查数据库配置 docker-compose -f docker-compose.prod.yml logs postgres ``` 3. **应用启动失败** ```bash # 查看应用日志 docker-compose -f docker-compose.prod.yml logs tyapi-app ``` ## 🔧 **配置优化** ### **性能调优:** 1. **数据库优化** - 根据服务器配置调整 PostgreSQL 参数 2. **Redis 优化** - 配置内存和持久化策略 3. **应用调优** - 调整连接池大小和超时时间 4. **Nginx 优化** - 配置缓存和压缩 ### **扩展配置:** 1. **HTTPS 配置** - 添加 SSL 证书支持 2. **域名配置** - 绑定自定义域名 3. **备份策略** - 配置数据库自动备份 4. **日志收集** - 集成 ELK 或其他日志系统 ## 🔄 **版本更新** ### **零停机更新:** ```bash # 构建新版本 ./scripts/deploy.sh v1.1.0 # 或渐进式更新 docker-compose -f docker-compose.prod.yml pull tyapi-app docker-compose -f docker-compose.prod.yml up -d --no-deps tyapi-app ``` ### **回滚操作:** ```bash # 回滚到指定版本 docker tag docker-registry.tianyuanapi.com/tyapi-server:v1.0.0 \ docker-registry.tianyuanapi.com/tyapi-server:latest docker-compose -f docker-compose.prod.yml up -d --no-deps tyapi-app ``` ## 📞 **技术支持** 如果在部署过程中遇到问题,请: 1. 检查本文档的故障排除部分 2. 查看服务日志定位问题 3. 确认配置文件的正确性 4. 验证网络和防火墙设置 --- **部署前请务必:** - ✅ 测试配置文件 - ✅ 备份现有数据 - ✅ 验证 Registry 访问 - ✅ 确认服务器资源充足