918bbed0fc
- 修复 deps.py 中 get_vn_service 的引用错误 (vn_service.vn_service -> vn_service) - 移除登录页面上的明文密码提示 - 改进前端错误处理,避免数据加载失败导致登录显示错误
410 lines
6.1 KiB
Markdown
410 lines
6.1 KiB
Markdown
# Docker 部署指南
|
|
|
|
本指南介绍如何使用 Docker Compose 部署 Sanguo VeighNa 量化交易平台。
|
|
|
|
## 目录
|
|
|
|
- [前置要求](#前置要求)
|
|
- [快速开始](#快速开始)
|
|
- [配置说明](#配置说明)
|
|
- [启动服务](#启动服务)
|
|
- [访问界面](#访问界面)
|
|
- [数据管理](#数据管理)
|
|
- [生产部署](#生产部署)
|
|
- [常见问题](#常见问题)
|
|
|
|
---
|
|
|
|
## 前置要求
|
|
|
|
### 系统要求
|
|
|
|
- **操作系统**: Linux, macOS, Windows (with WSL2)
|
|
- **Docker**: 20.10+
|
|
- **Docker Compose**: 2.0+
|
|
- **内存**: 至少 2GB 可用内存
|
|
- **存储**: 至少 10GB 可用存储空间
|
|
|
|
### 安装 Docker
|
|
|
|
#### Linux
|
|
|
|
```bash
|
|
# Ubuntu/Debian
|
|
curl -fsSL https://get.docker.com | bash
|
|
sudo usermod -aG docker $USER
|
|
|
|
# 启用 Docker Compose
|
|
sudo apt-get install docker-compose-plugin
|
|
```
|
|
|
|
#### macOS
|
|
|
|
下载并安装 [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop/)
|
|
|
|
#### Windows
|
|
|
|
下载并安装 [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop/)
|
|
|
|
---
|
|
|
|
## 快速开始
|
|
|
|
### 1. 克隆项目
|
|
|
|
```bash
|
|
git clone https://github.com/sanguo/sanguo_vnpy_v2.git
|
|
cd sanguo_vnpy_v2
|
|
```
|
|
|
|
### 2. 配置环境变量
|
|
|
|
```bash
|
|
cd docker
|
|
cp .env.example .env
|
|
vi .env # 编辑配置
|
|
```
|
|
|
|
### 3. 启动服务
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### 4. 查看状态
|
|
|
|
```bash
|
|
docker-compose ps
|
|
docker-compose logs -f
|
|
```
|
|
|
|
---
|
|
|
|
## 配置说明
|
|
|
|
### 环境变量
|
|
|
|
编辑 `.env` 文件配置以下参数:
|
|
|
|
```env
|
|
# 数据目录
|
|
DATA_DIR=./data
|
|
|
|
# 端口配置
|
|
HTTP_PORT=8000
|
|
WS_PORT=8080
|
|
|
|
# 时区
|
|
TZ=Asia/Shanghai
|
|
|
|
# 日志级别
|
|
VNPY_LOG_LEVEL=INFO
|
|
|
|
# 数据库配置
|
|
DB_TYPE=sqlite
|
|
DB_PATH=/app/data/vnpy.db
|
|
|
|
# Web 服务配置
|
|
WEB_HOST=0.0.0.0
|
|
WEB_PORT=8000
|
|
WEB_WORKERS=2
|
|
|
|
# 安全配置
|
|
JWT_SECRET_KEY=your-secret-key-here
|
|
SESSION_TIMEOUT=3600
|
|
```
|
|
|
|
### 目录映射
|
|
|
|
默认目录映射:
|
|
|
|
| 容器路径 | 宿主机路径 | 说明 |
|
|
|----------|------------|------|
|
|
| /app/data | `{DATA_DIR}/data` | 数据库和数据文件 |
|
|
| /app/logs | `{DATA_DIR}/logs` | 运行日志 |
|
|
| /app/config | `{DATA_DIR}/config` | 配置文件 |
|
|
| /app/temp | `{DATA_DIR}/temp` | 临时文件 |
|
|
|
|
---
|
|
|
|
## 启动服务
|
|
|
|
### 基本命令
|
|
|
|
```bash
|
|
# 启动所有服务
|
|
docker-compose up -d
|
|
|
|
# 仅启动核心服务
|
|
docker-compose up -d vnpy redis
|
|
|
|
# 启动并包含 Nginx
|
|
docker-compose --profile nginx up -d
|
|
|
|
# 启动并包含 PostgreSQL
|
|
docker-compose --profile postgres up -d
|
|
```
|
|
|
|
### 查看状态
|
|
|
|
```bash
|
|
# 查看容器状态
|
|
docker-compose ps
|
|
|
|
# 查看日志
|
|
docker-compose logs -f vnpy
|
|
|
|
# 查看所有服务日志
|
|
docker-compose logs -f
|
|
```
|
|
|
|
### 停止服务
|
|
|
|
```bash
|
|
# 停止服务
|
|
docker-compose down
|
|
|
|
# 停止并删除数据卷
|
|
docker-compose down -v
|
|
```
|
|
|
|
### 重启服务
|
|
|
|
```bash
|
|
# 重启所有服务
|
|
docker-compose restart
|
|
|
|
# 重启特定服务
|
|
docker-compose restart vnpy
|
|
```
|
|
|
|
### 进入容器
|
|
|
|
```bash
|
|
# 进入 VeighNa 容器
|
|
docker-compose exec vnpy bash
|
|
|
|
# 进入 Redis 容器
|
|
docker-compose exec redis sh
|
|
```
|
|
|
|
---
|
|
|
|
## 访问界面
|
|
|
|
### Web 界面
|
|
|
|
启动成功后,访问:
|
|
|
|
```
|
|
http://localhost:8000
|
|
```
|
|
|
|
### 默认登录
|
|
|
|
- **用户名**: `admin`
|
|
- **密码**: `admin123`
|
|
|
|
### WebSocket 端点
|
|
|
|
```
|
|
ws://localhost:8080
|
|
```
|
|
|
|
---
|
|
|
|
## 数据管理
|
|
|
|
### 数据备份
|
|
|
|
```bash
|
|
# 备份数据目录
|
|
tar czf vnpy_backup_$(date +%Y%m%d).tar.gz ./data
|
|
|
|
# 恢复数据
|
|
tar xzf vnpy_backup_YYYYMMDD.tar.gz
|
|
```
|
|
|
|
### 数据库操作
|
|
|
|
#### SQLite
|
|
|
|
```bash
|
|
# 进入容器
|
|
docker-compose exec vnpy bash
|
|
|
|
# 访问数据库
|
|
sqlite3 /app/data/vnpy.db
|
|
|
|
# 常用命令
|
|
.tables # 列出所有表
|
|
.schema # 查看表结构
|
|
.quit # 退出
|
|
```
|
|
|
|
#### PostgreSQL
|
|
|
|
```bash
|
|
# 进入 PostgreSQL 容器
|
|
docker-compose exec postgres psql -U vnpy -d vnpy
|
|
|
|
# 常用命令
|
|
\l # 列出所有数据库
|
|
\dt # 列出所有表
|
|
\q # 退出
|
|
```
|
|
|
|
---
|
|
|
|
## 生产部署
|
|
|
|
### 使用 Nginx 反向代理
|
|
|
|
```bash
|
|
# 启用 Nginx
|
|
docker-compose --profile nginx up -d
|
|
```
|
|
|
|
### 配置 HTTPS
|
|
|
|
1. 获取 SSL 证书
|
|
|
|
```bash
|
|
# 使用 Let's Encrypt
|
|
mkdir -p data/nginx/ssl
|
|
# 将证书文件复制到该目录
|
|
cp cert.pem data/nginx/ssl/
|
|
cp key.pem data/nginx/ssl/
|
|
```
|
|
|
|
2. 更新 nginx 配置
|
|
|
|
3. 重启服务
|
|
|
|
```bash
|
|
docker-compose restart nginx
|
|
```
|
|
|
|
### 资源限制
|
|
|
|
在 `.env` 文件中配置:
|
|
|
|
```env
|
|
VNPY_CPU_LIMIT=2.0
|
|
VNPY_MEMORY_LIMIT=2G
|
|
WEB_WORKERS=4
|
|
```
|
|
|
|
### 安全建议
|
|
|
|
1. **修改默认密码**
|
|
2. **使用强 JWT 密钥**
|
|
3. **启用 HTTPS**
|
|
4. **配置防火墙**
|
|
5. **定期备份**
|
|
6. **监控日志**
|
|
|
|
---
|
|
|
|
## 常见问题
|
|
|
|
### 端口冲突
|
|
|
|
如果端口被占用,修改 `.env` 中的端口配置:
|
|
|
|
```env
|
|
HTTP_PORT=8001
|
|
WS_PORT=8081
|
|
```
|
|
|
|
### 权限问题
|
|
|
|
```bash
|
|
# 修复数据目录权限
|
|
sudo chown -R $USER:$USER ./data
|
|
sudo chmod -R 755 ./data
|
|
```
|
|
|
|
### 容器无法启动
|
|
|
|
```bash
|
|
# 查看详细日志
|
|
docker-compose logs vnpy
|
|
|
|
# 重新构建
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
### 数据丢失
|
|
|
|
确保使用绑定挂载而非命名卷:
|
|
|
|
```yaml
|
|
volumes:
|
|
- ./data:/app/data
|
|
```
|
|
|
|
---
|
|
|
|
## 高级配置
|
|
|
|
### 使用 PostgreSQL
|
|
|
|
```bash
|
|
# 启用 PostgreSQL
|
|
export USE_POSTGRES=1
|
|
docker-compose --profile postgres up -d
|
|
```
|
|
|
|
### 自定义配置
|
|
|
|
```bash
|
|
# 挂载自定义配置
|
|
mkdir -p config
|
|
cp your_config.yaml config/
|
|
```
|
|
|
|
### 多实例部署
|
|
|
|
```bash
|
|
# 修改端口和数据目录
|
|
docker-compose -f docker-compose.yml -p vnpy2 up -d
|
|
```
|
|
|
|
---
|
|
|
|
## 附录
|
|
|
|
### Docker Compose 命令参考
|
|
|
|
| 命令 | 说明 |
|
|
|------|------|
|
|
| `up -d` | 后台启动服务 |
|
|
| `down` | 停止并删除容器 |
|
|
| `ps` | 查看服务状态 |
|
|
| `logs` | 查看日志 |
|
|
| `exec` | 在容器中执行命令 |
|
|
| `restart` | 重启服务 |
|
|
| `build` | 重新构建镜像 |
|
|
|
|
### 目录结构
|
|
|
|
```
|
|
sanguo_vnpy_v2/
|
|
├── docker/
|
|
│ ├── .env # 环境变量配置
|
|
│ ├── .env.example # 配置示例
|
|
│ ├── docker-compose.yml # 编排配置
|
|
│ ├── Dockerfile # 镜像构建
|
|
│ ├── entrypoint.sh # 启动脚本
|
|
│ └── nginx/ # Nginx 配置
|
|
├── data/ # 数据目录
|
|
├── logs/ # 日志目录
|
|
└── docs/ # 文档
|
|
```
|
|
|
|
---
|
|
|
|
**最后更新**: 2026-07-01
|
|
**文档版本**: 1.0.0
|