You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.1 KiB
6.1 KiB
期货股票数据统一平台 - 部署指南
系统要求
- Docker 20.10+
- Docker Compose 2.0+
- 内存:至少 4GB
- 磁盘:至少 10GB
快速部署
1. 克隆项目
cd 20260330_kline_system
2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,修改必要配置
# 生产环境务必修改 SECRET_KEY
3. 初始化数据库并启动服务
# 赋予执行权限
chmod +x deploy/init_db.sh
# 执行初始化脚本
./deploy/init_db.sh
该脚本会:
- 启动 TimescaleDB 和 Redis 容器
- 初始化数据库表结构
- 创建默认管理员账号
- 启动后端和前端服务
4. 验证部署
# 检查容器状态
docker-compose ps
# 查看后端日志
docker-compose logs backend
# 查看前端日志
docker-compose logs frontend
5. 访问系统
- 前端页面: http://localhost
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
默认管理员账号:
- 用户名:
admin - 密码:
admin123
⚠️ 首次登录后请立即修改密码!
服务说明
容器列表
| 服务名 | 端口 | 说明 |
|---|---|---|
| timescaledb | 5432 | TimescaleDB 时序数据库 |
| redis | 6379 | Redis 缓存 |
| backend | 8000 | FastAPI 后端服务 |
| frontend | 80 | Nginx 前端服务 |
数据持久化
数据通过 Docker volumes 持久化:
timescaledb_data: TimescaleDB 数据redis_data: Redis 数据backend_data: 后端 SQLite 配置数据
开发环境部署
后端开发
cd backend
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 运行开发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
前端开发
cd frontend
# 安装依赖
npm install
# 运行开发服务器
npm run dev
生产环境部署
1. 修改配置
编辑 .env 文件:
# 生产环境配置
DEBUG=false
SECRET_KEY=<生成一个强随机密钥>
LOG_LEVEL=WARNING
# 数据库配置(如使用外部数据库)
TIMESCALE_DB_URL=postgresql://user:password@db-host:5432/kline_data
2. 生成安全密钥
# 使用 Python 生成
python -c "import secrets; print(secrets.token_urlsafe(32))"
# 或使用 OpenSSL
openssl rand -hex 32
3. 启动服务
# 生产环境启动(后台运行)
docker-compose up -d
# 查看日志
docker-compose logs -f
4. 配置 Nginx(可选)
如果使用外部 Nginx 反向代理:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/ {
proxy_pass http://localhost:8000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
常用命令
查看服务状态
docker-compose ps
重启服务
docker-compose restart
停止服务
docker-compose down
停止并删除数据
# ⚠️ 警告:这将删除所有数据!
docker-compose down -v
查看日志
# 查看所有服务日志
docker-compose logs
# 查看特定服务日志
docker-compose logs backend
# 实时查看日志
docker-compose logs -f backend
进入容器
# 进入后端容器
docker-compose exec backend bash
# 进入数据库容器
docker-compose exec timescaledb psql -U postgres -d kline_data
备份数据
# 备份 TimescaleDB
docker-compose exec timescaledb pg_dump -U postgres kline_data > backup.sql
# 备份 SQLite
docker cp kline_backend:/app/data/config.db ./config.db.backup
恢复数据
# 恢复 TimescaleDB
cat backup.sql | docker-compose exec -T timescaledb psql -U postgres -d kline_data
监控与维护
健康检查
# 检查后端健康
curl http://localhost:8000/health
# 检查数据库连接
docker-compose exec timescaledb pg_isready -U postgres
数据库维护
# 查看数据库大小
docker-compose exec timescaledb psql -U postgres -d kline_data -c "SELECT pg_size_pretty(pg_database_size('kline_data'));"
# 清理旧数据(示例:删除 30 天前的数据)
docker-compose exec timescaledb psql -U postgres -d kline_data -c "DELETE FROM kline_data WHERE time < NOW() - INTERVAL '30 days';"
日志轮转
配置 Docker 日志轮转(在 docker-compose.yml 中添加):
services:
backend:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
故障排查
后端无法启动
# 查看后端日志
docker-compose logs backend
# 检查数据库连接
docker-compose exec backend python -c "from app.db.init_db import timescale_engine; print(timescale_engine.connect())"
前端无法访问
# 检查前端容器状态
docker-compose ps frontend
# 查看前端日志
docker-compose logs frontend
# 检查 Nginx 配置
docker-compose exec frontend nginx -t
数据库连接失败
# 检查数据库容器
docker-compose ps timescaledb
# 测试数据库连接
docker-compose exec timescaledb pg_isready -U postgres
WebSocket 连接失败
- 检查 Nginx 配置中的 WebSocket 支持
- 确保防火墙允许 WebSocket 连接
- 查看浏览器控制台错误信息
安全建议
- 修改默认密码:首次登录后立即修改 admin 密码
- 使用 HTTPS:生产环境配置 SSL 证书
- 限制访问:配置防火墙只允许必要端口
- 定期更新:及时更新 Docker 镜像和依赖
- 备份数据:定期备份数据库
- 监控日志:设置日志监控和告警
技术支持
如有问题,请查看:
- 项目 README.md
- 后端 API 文档:http://localhost:8000/docs
- 开发日志:DEVELOPMENT_LOG.md