Files
sanguo_vnpy_v2/docker/docker-compose.yml
claude_dev 918bbed0fc fix: 修复登录500错误和移除明文密码提示
- 修复 deps.py 中 get_vn_service 的引用错误 (vn_service.vn_service -> vn_service)
- 移除登录页面上的明文密码提示
- 改进前端错误处理,避免数据加载失败导致登录显示错误
2026-07-02 12:23:55 +08:00

263 lines
6.2 KiB
YAML
Raw Permalink 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.
version: '3.8'
# Sanguo VeighNa Docker 编排配置
# 用于 NAS 部署和开发环境
# 支持环境变量配置和绑定挂载
# 加载环境变量
# 使用前请复制 .env.example 为 .env 并修改配置
services:
# ============================================
# VeighNa 核心服务
# ============================================
vnpy:
build:
context: ..
dockerfile: docker/Dockerfile
container_name: sanguo-vnpy
restart: unless-stopped
# 容器名称
hostname: vnpy-server
# 环境变量
environment:
# Python 配置
- PYTHONUNBUFFERED=1
- PYTHONDONTWRITEBYTECODE=1
- TZ=${TZ:-Asia/Shanghai}
# VeighNa 配置
- VNPY_LOG_LEVEL=${VNPY_LOG_LEVEL:-INFO}
- VNPY_LOG_FILE=${VNPY_LOG_FILE:-/app/logs/vnpy.log}
# 数据库配置
- DB_TYPE=${DB_TYPE:-sqlite}
- DB_PATH=${DB_PATH:-/app/data/vnpy.db}
# Web 服务配置
- WEB_HOST=${WEB_HOST:-0.0.0.0}
- WEB_PORT=${WEB_PORT:-8000}
- WEB_WORKERS=${WEB_WORKERS:-2}
# 安全配置
- JWT_SECRET_KEY=${JWT_SECRET_KEY:-change-this-to-a-random-secret-key}
- SESSION_TIMEOUT=${SESSION_TIMEOUT:-3600}
# Redis 配置
- REDIS_HOST=${REDIS_HOST:-redis}
- REDIS_PORT=${REDIS_PORT:-6379}
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
# PostgreSQL 配置
- POSTGRES_DB=${POSTGRES_DB:-vnpy}
- POSTGRES_USER=${POSTGRES_USER:-vnpy}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-vnpy_password_change_me}
- POSTGRES_HOST=${POSTGRES_HOST:-postgres}
- POSTGRES_PORT=${POSTGRES_PORT:-5432}
# 开发选项
- SKIP_REDIS_CHECK=${SKIP_REDIS_CHECK:-0}
- USE_POSTGRES=${USE_POSTGRES:-0}
- DEBUG=${DEBUG:-0}
# 端口映射
ports:
- "${HTTP_PORT:-8000}:8000" # HTTP API
- "${WS_PORT:-8080}:8080" # WebSocket
# 数据卷 - 使用绑定挂载到 NAS stock 目录
volumes:
# 数据持久化目录 - 挂载到 NAS stock 目录
- ${DATA_DIR}/data:/app/data
- ${DATA_DIR}/logs:/app/logs
- ${DATA_DIR}/config:/app/config
- ${DATA_DIR}/temp:/app/temp
# 配置文件(只读)- 如果有外部配置
- ../config:/app/config:ro
# 网络
networks:
- vnpy-network
# 依赖项
depends_on:
- redis
# 资源限制
deploy:
resources:
limits:
cpus: '${VNPY_CPU_LIMIT:-2.0}'
memory: ${VNPY_MEMORY_LIMIT:-2G}
reservations:
cpus: '${VNPY_CPU_RESERVATION:-0.5}'
memory: ${VNPY_MEMORY_RESERVATION:-512M}
# ============================================
# Redis 服务(缓存和消息队列)
# ============================================
redis:
image: redis:7-alpine
container_name: sanguo-redis
restart: unless-stopped
# 命令参数
command: >
sh -c '
if [ -n "${REDIS_PASSWORD}" ]; then
redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}
else
redis-server --appendonly yes
fi
'
# 环境变量
environment:
- TZ=${TZ:-Asia/Shanghai}
# 数据卷 - 挂载到 NAS stock 目录
volumes:
- ${DATA_DIR}/redis:/data
# 网络
networks:
- vnpy-network
# 资源限制
deploy:
resources:
limits:
cpus: '${REDIS_CPU_LIMIT:-0.5}'
memory: ${REDIS_MEMORY_LIMIT:-256M}
# ============================================
# Nginx 反向代理(可选)
# ============================================
nginx:
image: nginx:alpine
container_name: sanguo-nginx
restart: unless-stopped
profiles:
- nginx
- ${ENABLE_NGINX:+nginx}
# 环境变量
environment:
- TZ=${TZ:-Asia/Shanghai}
# 端口映射
ports:
- "${NGINX_HTTP_PORT:-80}:80"
- "${NGINX_HTTPS_PORT:-443}:443"
# 配置文件
volumes:
- ../docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ${DATA_DIR}/nginx/ssl:/etc/nginx/ssl:ro
- ${DATA_DIR}/nginx/cache:/var/cache/nginx
- ${DATA_DIR}/logs/nginx:/var/log/nginx
# 依赖项
depends_on:
- vnpy
# 网络
networks:
- vnpy-network
# 资源限制
deploy:
resources:
limits:
cpus: '${NGINX_CPU_LIMIT:-0.5}'
memory: ${NGINX_MEMORY_LIMIT:-256M}
# ============================================
# PostgreSQL 数据库(可选,升级用)
# ============================================
postgres:
image: postgres:15-alpine
container_name: sanguo-postgres
restart: unless-stopped
profiles:
- postgres
- ${USE_POSTGRES:+postgres}
# 环境变量
environment:
- POSTGRES_DB=${POSTGRES_DB:-vnpy}
- POSTGRES_USER=${POSTGRES_USER:-vnpy}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-vnpy_password_change_me}
- TZ=${TZ:-Asia/Shanghai}
- PGDATA=/var/lib/postgresql/data/pgdata
# 数据卷 - 挂载到 NAS stock 目录
volumes:
- ${DATA_DIR}/postgres:/var/lib/postgresql/data
# 网络
networks:
- vnpy-network
# 资源限制
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
# ============================================
# 网络定义
# ============================================
networks:
vnpy-network:
name: sanguo_vnpy_network
driver: bridge
# ============================================
# 使用说明
# ============================================
#
# 基本使用:
#
# 1. 首次使用前,配置环境变量:
# cp .env.example .env
# vi .env # 修改 DATA_DIR 等配置
#
# 2. 创建数据目录:
# mkdir -p ${DATA_DIR}/{data,logs,config,temp,redis,nginx}
#
# 3. 启动核心服务:
# docker-compose up -d
#
# 4. 启动所有服务(含 Nginx):
# docker-compose --profile nginx up -d
#
# 5. 启动所有服务(含 PostgreSQL:
# docker-compose --profile postgres up -d
#
# 管理命令:
#
# 查看日志:
# docker-compose logs -f vnpy
#
# 停止服务:
# docker-compose down
#
# 重启服务:
# docker-compose restart vnpy
#
# 进入容器:
# docker-compose exec vnpy bash
#
# 更新并重启:
# docker-compose up -d --build
#
# 数据备份:
# tar czf vnpy_backup_$(date +%Y%m%d).tar.gz ${DATA_DIR}
#
# ============================================