172 lines
3.5 KiB
Markdown
172 lines
3.5 KiB
Markdown
# 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用户运行容器 |