diff --git a/docs/three-env-code-promote.md b/docs/three-env-code-promote.md index c71a528..f6872dc 100644 --- a/docs/three-env-code-promote.md +++ b/docs/three-env-code-promote.md @@ -162,3 +162,29 @@ $D run -d --init --name sanguo_vnpy_v2 \ - 验证:`$D inspect sanguo_vnpy_v2 --format '{{.HostConfig.Init}}'` = `true`;`ps -o comm -p $(...PID)` = `docker-init`(tini)。 **正式 nas-verify(重建后必跑,同 ci-cd 口径)**:login(token 字段) + `/api/v1/strategy/list` 200 非空 + dbbardata 600519 SSE >0。 + +## 10. NAS 镜像可复现构建(避免 commit 链依赖丢失) + +**现状**:NAS 运行的 `sanguo_vnpy_v2:pre-init-rebuild` 是 **docker commit 快照链**(with-sqlite → 手动 pip 装 bullet-trade/jwt/… → commit),非从 Dockerfile 构建。手动装的包只活在容器层,**任何从 base 重建都会丢**。实测 `pre-init-rebuild` 比 `with-sqlite` 多 64 个包(含 jwt/bullet-trade/baostock/jqdatasdk/vnpy_ctastrategy/pytest/整个 jupyter 栈)。 + +**已修(2026-08-01)**:`requirements-docker.txt` 补齐缺失的**顶层运行时**依赖(此前只在容器层手动装;transitive 会自动拉,不用列): +- `bullet-trade==0.9.2`(组合框架,import 名 `bullet_trade`) +- `jqdatasdk==1.9.8`(`import bullet_trade` 默认 provider=jqdata 触发 import,包须在;实跑用 LocalUnifiedProvider 不调 online) +- `vnpy_ctastrategy==1.4.1`(CTA 策略引擎,sanguo_backtest/sanguo_live 广用) +- `vnpy_sqlite==1.1.3`(vnpy sqlite 驱动,trader/database.py 运行时动态加载) + +四个均已确认公共 PyPI 可装,版本钉死=容器实证版。**不补**:`pyecharts`(0 import 残留)、jupyter 栈(交互开发 bloat,非运行时)。 + +**可复现重建步骤**(⚠️**待空闲验证**——现运行容器 02 回测在跑,别动;这是验证步骤,不是修复本身,修复已落到 requirements): +```bash +D=/var/packages/Docker/target/usr/bin/docker +# 1. 建 base(docker/Dockerfile 装完整 requirements-docker.txt;Dockerfile.nas 的 FROM sanguo_vnpy:base 依赖它) +$D build -f docker/Dockerfile -t sanguo_vnpy:base . +# 2. 建 app 层(Dockerfile.nas FROM base + COPY 代码) +$D build -f docker/Dockerfile.nas -t sanguo_vnpy_v2:reproducible . +# 3. 起测试容器带 --init(见 §9),用新名不占 sanguo_vnpy_v2 +$D run -d --init --name sanguo_repro_test -v <同挂载> -p 8001:8000 sanguo_vnpy_v2:reproducible +# 4. nas-verify(login+strategy/list+dbbardata) + 跑一次 03 短测确认组合链路(bullet_trade import 通) +# 5. 全过才换掉 sanguo_vnpy_v2;pre-init-rebuild 暂留回滚 +``` +**遗留**:① 干净重建尚未实测(requirements 已对齐容器 216 包里的顶层子集,理论可复现,待 env 空闲验证);② `requirements-lock.txt`(==钉版基线)未同步这 4 包,且本身"当前未验",待统一。 diff --git a/requirements-docker.txt b/requirements-docker.txt index 1bdd983..41365cf 100644 --- a/requirements-docker.txt +++ b/requirements-docker.txt @@ -20,6 +20,21 @@ nbformat>=5.10.4 requests>=2.32.0 qrcode>=7.4.2 +# VeighNa 策略/数据库扩展(项目必需,非可选) +# vnpy_ctastrategy: CTA 策略引擎(sanguo_backtest/cta_engine·cta_optimizer·ashare_engine, sanguo_live 等广用) +# vnpy_sqlite: vnpy sqlite 数据库驱动(vnpy trader/database.py 运行时动态加载,缺则 vnpy 无法持久化) +vnpy_ctastrategy==1.4.1 +vnpy_sqlite==1.1.3 + +# ============================================ +# 组合策略框架(BulletTrade)—— 2026-08-01 补:此前只在容器层手动装,重建会丢 +# ============================================ +# bullet-trade: 多股票选股组合框架(sanguo_portfolio, 03/01/02 三策略; import 名 bullet_trade) +# jqdatasdk: bullet_trade import 时默认 provider=jqdata 触发 import jqdatasdk,需可解析 +# (实跑用 LocalUnifiedProvider 不调 jqdata online,但 import 链需要包存在,否则 import 崩) +bullet-trade==0.9.2 +jqdatasdk==1.9.8 + # VeighNa Gateway 扩展(可选,根据需要安装) # 注意:这些是独立的扩展包,未安装时不影响核心功能 # vnpy_ctp