本目录提供完整的 Docker Compose 编排,用于启动以下服务:
web: Next.js 应用python-service: FastAPI 金融与情报数据网关workflow-worker: 工作流执行器screening-worker: 筛选任务执行器redis: 运行时缓存与队列postgres: PostgreSQL 数据库
- 已安装并启动 Docker Desktop
docker version和docker compose version可以正常执行
先创建本地部署配置:
cp deploy/.env.example deploy/.env最低必填项:
AUTH_SECRETPOSTGRES_PASSWORDWEB_PORT/PYTHON_SERVICE_PORT/POSTGRES_PORT
建议同时配置:
DEEPSEEK_API_KEY: 启用工作流摘要、Insight 增强等能力FIRECRAWL_API_KEY: 启用公司研究网页抓取ZHIPU_API_KEY: 启用主题到概念映射的智谱 Web SearchIFIND_USERNAME/IFIND_PASSWORD: 启用 iFinD 作为主筛选数据源REFCHECKER_*: 启用 RefChecker 可信度分析
说明:
REFCHECKER_ENABLED=false时,python-service镜像默认只安装基础依赖,可信度分析接口会继续使用内置 heuristic fallback。- 如果要启用 RefChecker,请先在
deploy/.env中将REFCHECKER_ENABLED=true,再执行docker compose ... up -d --build重新构建镜像。
公共 PyPI 当前没有可直接安装的 iFinDPy 发行版。如果需要在 Linux 容器内启用 iFinD,请将厂商提供的安装包放到:
deploy/python/vendor/
支持格式:
*.whl*.tar.gz*.zip
如果该目录为空,Python 服务仍可构建,并按 SCREENING_ENABLE_AKSHARE_FALLBACK 退回到 AkShare。
主题概念规则默认持久化到 Docker 命名卷 python_theme_rules_data,默认路径:
/data/theme-concept-rules/theme_concept_rules.json
如有需要,可通过 INTELLIGENCE_THEME_CONCEPT_RULES_FILE 覆盖。
概念目录主链路现在使用本地 THS 快照文件,而不是在请求时直接调用 stock_board_concept_name_ths。
- 容器内默认路径:
/app/data/ths_concept_catalog.csv - 宿主机路径:仓库根目录下的 ths_concept_catalog.csv
python-service会将仓库根data/目录绑定挂载到容器内/app/data
可以通过 INTELLIGENCE_CONCEPT_CATALOG_FILE 覆盖默认路径。
建议至少每日盘前或盘后刷新一次:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml run --rm python-service python scripts/refresh_concept_catalog.py --output /app/data/ths_concept_catalog.csv如果你是在本地 Python 环境中执行,也可以在 python_services/ 目录下运行:
python scripts/refresh_concept_catalog.py --output ../data/ths_concept_catalog.csv- 刷新脚本会从 THS 拉取最新概念目录,并覆盖写入
ths_concept_catalog.csv - 如果概念目录文件缺失、为空或列结构损坏,概念相关接口会显式报错,不会自动回退到 live THS
- 更新本地
data/ths_concept_catalog.csv后,无需重建镜像;后续请求会按文件更新时间自动热加载
在仓库根目录执行:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml up -d --build启动后:
web会依次执行npm run validate:runtime、npm run db:push、npm run startworkflow-worker会轮询并执行工作流任务screening-worker会轮询并执行筛选任务
- Web:
http://localhost:3000 - Python API Docs:
http://localhost:8000/docs - PostgreSQL: 默认
localhost:5432
查看全部日志:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml logs -f查看 workflow worker 日志:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml logs -f workflow-worker查看容器状态:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml ps停止服务:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml down停止服务并删除数据卷:
docker compose --env-file deploy/.env -f deploy/docker-compose.yml down -vUse deploy/deploy-main.ps1 as the only supported Docker deployment entrypoint.
powershell -ExecutionPolicy Bypass -File deploy\deploy-main.ps1 `
-Services web,python-service,workflow-worker `
-RequiredEnv AUTH_SECRET,NEXTAUTH_URLThe script always resolves these paths from .worktrees/deploy-main instead of the current shell directory:
.worktrees/deploy-main.worktrees/deploy-main/deploy/docker-compose.yml.worktrees/deploy-main/.env
It verifies three things before reporting success:
docker compose config- target services reach the running state
- required env vars exist inside the target containers