fix(docker): requirements-docker 补组合/CTA 运行时依赖(治重建丢包后患)
容器是 docker commit 快照链(pre-init-rebuild 比 with-sqlite 多64包), 手动装的 bullet-trade/jqdatasdk/vnpy_ctastrategy/vnpy_sqlite 只活容器层, 从 base 重建会全丢。补进 requirements-docker.txt 钉到容器实证版(均PyPI可装): - bullet-trade==0.9.2(组合框架,import bullet_trade) - jqdatasdk==1.9.8(bullet_trade import 链必需) - vnpy_ctastrategy==1.4.1(CTA引擎) - vnpy_sqlite==1.1.3(vnpy sqlite驱动) 不补 pyecharts(0import残留)/jupyter栈(bloat) docs §10 记可复现重建步骤;干净重建待 env 空闲验证
This commit is contained in:
@@ -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)。
|
- 验证:`$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。
|
**正式 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 包,且本身"当前未验",待统一。
|
||||||
|
|||||||
@@ -20,6 +20,21 @@ nbformat>=5.10.4
|
|||||||
requests>=2.32.0
|
requests>=2.32.0
|
||||||
qrcode>=7.4.2
|
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 扩展(可选,根据需要安装)
|
# VeighNa Gateway 扩展(可选,根据需要安装)
|
||||||
# 注意:这些是独立的扩展包,未安装时不影响核心功能
|
# 注意:这些是独立的扩展包,未安装时不影响核心功能
|
||||||
# vnpy_ctp
|
# vnpy_ctp
|
||||||
|
|||||||
Reference in New Issue
Block a user