|
|
@@ -0,0 +1,130 @@
|
|
|
+# Docker 部署指南
|
|
|
+
|
|
|
+## 快速开始
|
|
|
+
|
|
|
+### 1. 启动服务
|
|
|
+
|
|
|
+```bash
|
|
|
+# 构建并启动所有服务
|
|
|
+docker-compose up -d
|
|
|
+
|
|
|
+# 查看日志
|
|
|
+docker-compose logs -f chat-ai-api
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 验证服务
|
|
|
+
|
|
|
+- API 文档:http://localhost:8000/docs
|
|
|
+- MongoDB:localhost:27017
|
|
|
+- Redis:localhost:6379
|
|
|
+
|
|
|
+## 生产环境调整
|
|
|
+
|
|
|
+### CORS 配置
|
|
|
+
|
|
|
+编辑 `main.py` 中的 CORS 设置,指定具体的允许域名:
|
|
|
+
|
|
|
+```python
|
|
|
+app.add_middleware(
|
|
|
+ CORSMiddleware,
|
|
|
+ allow_origins=["https://yourdomain.com", "https://www.yourdomain.com"],
|
|
|
+ allow_credentials=True,
|
|
|
+ allow_methods=["GET", "POST", "PUT", "DELETE"],
|
|
|
+ allow_headers=["*"],
|
|
|
+)
|
|
|
+```
|
|
|
+
|
|
|
+### 日志级别
|
|
|
+
|
|
|
+生产环境建议使用 `warning` 或 `error`:
|
|
|
+
|
|
|
+```bash
|
|
|
+LOG_LEVEL=warning docker-compose up -d
|
|
|
+```
|
|
|
+
|
|
|
+### 数据库持久化
|
|
|
+
|
|
|
+数据已通过 Docker volumes 持久化:
|
|
|
+- MongoDB: `mongodb_data`
|
|
|
+- Redis: `redis_data`
|
|
|
+
|
|
|
+### 扩展副本
|
|
|
+
|
|
|
+如需多个 API 实例,编辑 `docker-compose.yml`:
|
|
|
+
|
|
|
+```yaml
|
|
|
+services:
|
|
|
+ chat-ai-api-1:
|
|
|
+ # ... 配置
|
|
|
+ ports:
|
|
|
+ - "8001:8000"
|
|
|
+
|
|
|
+ chat-ai-api-2:
|
|
|
+ # ... 配置
|
|
|
+ ports:
|
|
|
+ - "8002:8000"
|
|
|
+```
|
|
|
+
|
|
|
+然后使用 Nginx 进行负载均衡。
|
|
|
+
|
|
|
+## 常用命令
|
|
|
+
|
|
|
+```bash
|
|
|
+# 启动服务
|
|
|
+docker-compose up -d
|
|
|
+
|
|
|
+# 停止服务
|
|
|
+docker-compose down
|
|
|
+
|
|
|
+# 查看日志
|
|
|
+docker-compose logs -f chat-ai-api
|
|
|
+
|
|
|
+# 重启服务
|
|
|
+docker-compose restart chat-ai-api
|
|
|
+
|
|
|
+# 进入容器
|
|
|
+docker-compose exec chat-ai-api bash
|
|
|
+
|
|
|
+# 查看服务状态
|
|
|
+docker-compose ps
|
|
|
+
|
|
|
+# 清理所有数据(谨慎)
|
|
|
+docker-compose down -v
|
|
|
+```
|
|
|
+
|
|
|
+## 故障排查
|
|
|
+
|
|
|
+### 容器启动失败
|
|
|
+
|
|
|
+```bash
|
|
|
+# 查看详细日志
|
|
|
+docker-compose logs chat-ai-api
|
|
|
+
|
|
|
+# 检查环境变量
|
|
|
+docker-compose config
|
|
|
+```
|
|
|
+
|
|
|
+### 数据库连接失败
|
|
|
+
|
|
|
+确保 MongoDB 和 Redis 已启动:
|
|
|
+
|
|
|
+```bash
|
|
|
+docker-compose ps
|
|
|
+```
|
|
|
+
|
|
|
+### 端口被占用
|
|
|
+
|
|
|
+修改 `docker-compose.yml` 中的端口映射:
|
|
|
+
|
|
|
+```yaml
|
|
|
+ports:
|
|
|
+ - "8001:8000" # 改为其他端口
|
|
|
+```
|
|
|
+
|
|
|
+## 安全建议
|
|
|
+
|
|
|
+1. **修改默认密码**:MongoDB 和 Redis 的默认密码需要修改
|
|
|
+2. **环境变量保护**:`.env` 文件不要提交到版本控制
|
|
|
+3. **CORS 限制**:生产环境指定具体的允许域名
|
|
|
+4. **SECRET_KEY**:使用强随机密钥(至少32字符)
|
|
|
+5. **日志级别**:生产环境降低日志级别以减少日志输出
|