比特币分析平台 - 使用 Docker 一键部署的全栈 Web 应用,提供实时比特币数据分析、价格预测、技术指标分析和风险评估。
- 📈 实时数据监控 - 实时比特币价格、交易量和市场指标
- 📉 技术分析图表 - K线图、成交量、RSI、MACD、布林带等多种技术指标
- 🔮 价格预测 - 基于随机森林的机器学习价格预测
⚠️ 风险警报 - 智能风险评估和实时预警系统- 📊 历史数据分析 - 灵活的历史数据查询和统计分析(自动保留最近一年数据)
- 💾 MySQL 数据库 - 生产级数据持久化
- 🔌 离线模式 - 无网络时自动降级使用历史数据
- 🐳 Docker 部署 - 一键启动,跨平台兼容(Windows/macOS/Linux)
只需要安装 Docker:
- Docker Desktop: 下载地址
- Windows: Docker Desktop for Windows
- macOS: Docker Desktop for Mac
- Linux: Docker Engine
💡 提示: Docker Desktop 已包含 Docker Compose,无需单独安装。
如果安装 Docker Desktop 后,终端提示找不到 docker 命令,请执行以下操作:
临时解决(当前终端会话有效):
export PATH="/usr/local/bin:$PATH"永久解决(推荐):
# 将 Docker 路径添加到 shell 配置文件
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc💡 说明: Docker Desktop 会自动创建符号链接到
/usr/local/bin/,但某些终端配置可能不包含此路径。
由于网络原因,拉取 Docker 镜像可能会很慢或超时。强烈建议配置镜像加速器:
配置步骤:
- 打开 Docker Desktop
- 点击右上角 设置图标 (⚙️)
- 选择 Docker Engine
- 在编辑器中找到
"registry-mirrors"配置项,添加以下内容:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.nju.edu.cn"
]
}- 点击 Apply & Restart (应用并重启)
- 等待 Docker 重启完成(约 10-30 秒)
验证配置:
docker info | grep -A 5 "Registry Mirrors"应该看到类似输出:
Registry Mirrors:
https://docker.m.daocloud.io/
https://dockerproxy.com/
https://docker.nju.edu.cn/
⚡ 效果: 配置后,镜像下载速度可提升 10-50 倍,构建时间从 10 分钟缩短到 2-3 分钟。
git clone https://github.com/fallingnight131/btc_analysis_platform.git
cd btc_analysis_platformmacOS/Linux:
bash docker-start.shWindows:
docker-start.bat或者手动执行:
docker-compose up -d --build启动完成后(约 2-3 分钟),在浏览器中打开:
- 🌐 前端界面: http://localhost:8080
- 🔌 后端 API: http://localhost:5001
- 🗄️ MySQL 数据库: localhost:3306
🎉 恭喜!你已经成功部署了比特币分析平台!
启动服务:
# 首次启动(自动构建)
docker-compose up -d
# 或使用启动脚本
bash docker-start.sh # macOS/Linux
docker-start.bat # Windows(双击运行)停止服务(释放内存和CPU):
docker-compose down✅ 停止后会立即释放内存和 CPU,但保留镜像和数据
✅ 下次启动只需 10-20 秒
重启服务:
# 方式 1: 重启所有服务
docker-compose restart
# 方式 2: 重启特定服务
docker-compose restart backend
docker-compose restart frontend
docker-compose restart mysql
# 方式 3: 停止后重新启动
docker-compose down
docker-compose up -d# 查看服务状态
docker-compose ps
# 查看日志(所有服务)
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f mysql
# 查看实时资源占用
docker stats
# 查看磁盘占用
docker system df
# 重新构建并启动(修改代码后)
docker-compose up -d --build# 停止并删除容器(保留镜像和数据)
docker-compose down
# 停止并删除数据卷(⚠️ 数据库数据会丢失)
docker-compose down -v
# 完全清理(包括镜像)
docker-compose down
docker rmi btc_analysis_platform-backend btc_analysis_platform-frontend mysql:8.0项目包含 3 个 Docker 服务:
| 服务 | 容器名 | 端口 | 说明 |
|---|---|---|---|
| MySQL | btc_analysis_platform_mysql |
3306 | 数据库服务(MySQL 8.0) |
| Backend | btc_analysis_platform_backend |
5001 | Flask API 服务(Python 3.11) |
| Frontend | btc_analysis_platform_frontend |
8080 | Vue 3 + Nginx 静态服务 |
btc_analysis_platform/
├── docker-compose.yml # Docker 编排配置
├── .dockerignore # Docker 构建忽略
├── .gitignore # Git 忽略配置
├── .env.example # 环境变量模板
├── docker-start.sh # 启动脚本 (macOS/Linux)
├── docker-start.bat # 启动脚本 (Windows)
│
├── README.md # 📖 项目文档(用户部署)
├── QUICKSTART.md # 🚀 快速开始指南
├── CONTRIBUTING.md # 🤝 开发者贡献指南
├── LICENSE # 📄 MIT 开源协议
│
├── backend/ # 后端服务
│ ├── Dockerfile # 后端 Docker 镜像
│ ├── app.py # Flask 应用入口
│ ├── routes.py # API 路由
│ ├── api.py # CoinGecko API 集成
│ ├── database.py # MySQL 数据库管理
│ ├── cache.py # 缓存管理
│ ├── utils.py # 工具函数(技术指标)
│ ├── requirements.txt # Python 依赖
│ └── data/ # 数据目录(Docker 卷挂载)
│
└── frontend/ # 前端服务
├── Dockerfile # 前端 Docker 镜像
├── nginx.conf # Nginx 配置
├── src/ # Vue 3 源码
│ ├── views/ # 页面组件
│ ├── components/ # UI 组件
│ └── router/ # 路由配置
├── package.json # npm 依赖
└── vue.config.js # Vue 配置
后端提供以下 RESTful API:
| 端点 | 方法 | 描述 |
|---|---|---|
/api/health |
GET | 健康检查 |
/api/realtime |
GET | 获取实时价格和市场数据 |
/api/historical?days=7 |
GET | 获取历史数据(7/30/90/365天) |
/api/statistics?days=7 |
GET | 获取统计数据 |
/api/prediction |
GET | 获取价格预测 |
/api/risk-alerts |
GET | 获取风险警报 |
/api/candlestick?days=7 |
GET | 获取 K 线数据 |
# 健康检查
curl http://localhost:5001/api/health
# 获取实时数据
curl http://localhost:5001/api/realtime
# 获取最近 30 天历史数据
curl http://localhost:5001/api/historical?days=30
# 获取价格预测
curl http://localhost:5001/api/prediction- Flask 3.0 - Python Web 框架
- MySQL 8.0 - 关系型数据库
- Pandas - 数据处理
- Scikit-learn - 机器学习(价格预测)
- CoinGecko API - 加密货币数据源
- Vue 3 - 渐进式 JavaScript 框架
- Vue Router 4 - 路由管理
- ECharts 6 - 数据可视化
- Bootstrap 5 - UI 框架
- Nginx - Web 服务器(生产环境)
- Docker - 容器化
- Docker Compose - 多容器编排
- 数据库自动保留最近 365 天的历史数据
- 查询超过 1 年的数据时,会实时从 CoinGecko API 获取(不写入数据库)
- 每次保存新数据时会自动清理过期数据(>365天)
- 数据存储在 Docker 卷
mysql_data中,持久化保存
# 备份数据库
docker exec btc-mysql mysqldump -u root -pbitcoin123 bitcoin_db > backup.sql
# 恢复数据库
docker exec -i btc-mysql mysql -u root -pbitcoin123 bitcoin_db < backup.sql
# 备份数据卷
docker run --rm -v btc_analysis_platform_mysql_data:/data -v $(pwd):/backup \
alpine tar czf /backup/mysql_backup.tar.gz /data问题: docker-compose up 报错
解决方法:
# 检查 Docker 是否运行
docker info
# 查看详细日志
docker-compose logs
# 完全重建
docker-compose down -v
docker-compose up -d --build问题: Bind for 0.0.0.0:8080 failed: port is already allocated
解决方法:
# 修改 docker-compose.yml 中的端口映射
# 例如将 "8080:80" 改为 "8081:80"或者停止占用端口的服务:
# macOS/Linux
lsof -i :8080
kill -9 <PID>
# Windows
netstat -ano | findstr :8080
taskkill /PID <PID> /F可能原因:
- 后端服务未就绪
- API 连接失败
解决方法:
# 1. 检查所有服务状态
docker-compose ps
# 2. 查看后端日志
docker-compose logs backend
# 3. 测试 API 连接
curl http://localhost:5001/api/health
# 4. 重启服务
docker-compose restart问题: 后端日志显示 MySQL 连接错误
解决方法:
# 1. 等待 MySQL 完全启动(首次启动需要 30-60 秒)
docker-compose logs mysql
# 2. 检查 MySQL 健康状态
docker-compose ps
# 3. 手动重启后端(等 MySQL 就绪后)
docker-compose restart backend原因: CoinGecko 免费 API 有请求频率限制(50次/分钟)
解决方案:
- 系统已实现 30 分钟缓存机制
- API 失败时自动降级到数据库历史数据
- 建议等待几分钟后重试
# 所有服务
docker-compose logs -f
# 只看后端
docker-compose logs -f backend
# 只看前端
docker-compose logs -f frontend
# 只看 MySQL
docker-compose logs -f mysql# 进入后端容器
docker-compose exec backend bash
# 进入前端容器
docker-compose exec frontend sh
# 进入 MySQL 容器
docker-compose exec mysql bash
# 连接 MySQL 数据库
docker-compose exec mysql mysql -u bitcoin_user -pbitcoin123 bitcoin_db# 只重建后端
docker-compose up -d --build backend
# 只重建前端
docker-compose up -d --build frontend
# 重建所有服务
docker-compose up -d --build- 修改
docker-compose.yml,添加 Nginx 反向代理 - 配置 SSL 证书(Let's Encrypt 推荐)
- 更新前端 API 地址为 HTTPS
- MySQL: 调整
docker-compose.yml中的内存限制 - 后端: 增加 Gunicorn worker 数量(修改
backend/Dockerfile) - 前端: 已使用 Nginx + Gzip 压缩,生产就绪
# 实时监控资源使用
docker stats
# 导出日志到文件
docker-compose logs > app.log欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建你的功能分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
遇到问题?查看 故障排查指南,包含:
- ✅ Docker 安装配置(PATH、镜像加速器)
- ✅ 容器健康检查失败
- ✅ 网络和端口问题
- ✅ 数据库连接问题
- ✅ 磁盘空间管理
- ✅ 完全重新部署步骤
本项目采用 MIT License - 详见 LICENSE 文件
- CoinGecko API - 免费的加密货币数据
- Vue.js - 渐进式 JavaScript 框架
- Flask - 轻量级 Python Web 框架
- ECharts - 强大的数据可视化库
- Docker - 容器化平台
⭐ 如果这个项目对你有帮助,请给个 Star!