trading.ai/DOCKER_DEPLOYMENT.md
2025-08-14 10:06:19 +08:00

172 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trading AI - Docker 部署指南
## 🚀 快速开始
### 1. 准备配置文件
复制配置模板并填写你的配置:
```bash
cp config_example.py config.py
# 编辑 config.py填入你的钉钉webhook配置
```
### 2. 环境变量配置(可选)
创建 `.env` 文件:
```bash
# 钉钉机器人配置
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN
DINGTALK_WEBHOOK_SECRET=SEC_YOUR_SECRET
# 选币配置
USE_MARKET_CAP_RANKING=true
COIN_LIMIT=50
```
### 3. 启动服务
```bash
# 构建并启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
```
## 📋 服务说明
### 服务架构
- **coin-selector**: 选币引擎,执行技术分析和选币逻辑
- **web-dashboard**: Web仪表板端口5000提供可视化界面
- **scheduler**: 定时调度服务,自动执行选币任务
### 端口映射
- Web界面: http://localhost:5000
## 🛠️ 管理命令
```bash
# 查看运行状态
docker-compose ps
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 查看特定服务日志
docker-compose logs coin-selector
docker-compose logs web-dashboard
docker-compose logs scheduler
# 进入容器调试
docker-compose exec coin-selector bash
# 更新服务
docker-compose pull
docker-compose up -d --build
```
## 📁 数据持久化
- `./data/`: 数据文件目录
- `./logs/`: 日志文件目录
- `trading-db`: 数据库卷
- `config.py`: 配置文件(只读挂载)
## 🔧 配置说明
### 环境变量优先级
1. `.env` 文件中的环境变量
2. `config.py` 文件中的配置
3. 默认值
### 重要配置项
- `USE_MARKET_CAP_RANKING`: 是否按市值排名选币
- `COIN_LIMIT`: 分析币种数量限制
- `DINGTALK_WEBHOOK_URL`: 钉钉机器人地址
- `DINGTALK_WEBHOOK_SECRET`: 钉钉加签密钥
## 🔍 健康检查
所有服务都配置了健康检查:
- **coin-selector**: 检查数据库文件存在性
- **web-dashboard**: HTTP健康检查端点
- **scheduler**: 进程存活检查
## 📊 监控和日志
```bash
# 实时查看所有服务日志
docker-compose logs -f
# 查看特定时间范围的日志
docker-compose logs --since="2h" coin-selector
# 查看系统资源使用
docker stats
```
## 🚨 故障排除
### 常见问题
1. **TA-Lib安装失败**
```bash
# 重新构建镜像
docker-compose build --no-cache
```
2. **数据库权限问题**
```bash
# 检查数据卷权限
docker-compose exec coin-selector ls -la /app/
```
3. **钉钉通知失败**
```bash
# 检查配置
docker-compose exec coin-selector python setup_dingtalk.py test
```
4. **端口冲突**
```bash
# 修改docker-compose.yml中的端口映射
ports:
- "5001:5000" # 改为5001端口
```
### 调试模式
```bash
# 以调试模式启动
docker-compose -f docker-compose.yml -f docker-compose.debug.yml up
# 单独测试选币功能
docker-compose run --rm coin-selector python coin_selection_engine.py
```
## 🔄 定期维护
```bash
# 清理未使用的Docker资源
docker system prune -a
# 备份数据库
docker-compose exec coin-selector cp /app/trading.db /app/data/backup_$(date +%Y%m%d).db
# 清理旧日志
find ./logs -name "*.log" -mtime +7 -delete
```
## 📈 生产环境建议
1. **资源限制**: 在docker-compose.yml中添加资源限制
2. **日志轮转**: 配置日志轮转避免磁盘空间不足
3. **监控报警**: 集成监控系统如Prometheus
4. **备份策略**: 定期备份数据库和配置文件
5. **安全加固**: 使用非root用户运行容器