feat(nas): 5m下载脱离主容器治本——DSM任务原docker exec进主容器跑,任何push→CI重启主容器=杀在跑的5m(08-20两案+08-22增量案三案实锤,系统性);修=独立一次性容器docker run --rm同镜像同tag(与现役容器sanguo_vnpy_v2:lock-aligned实证一致,CI部署自动跟踪版本),挂载与主容器完全一致,主容器重启永不波及;单实例锁/pid活性/state幂等全部沿用;DSM命令改一行:bash /volume1/stock/sanguo_5m/run_5m.sh;⚠️片宽183d维持不缩(45d小片同配额多跑4倍夜晚,容器解耦后已无暴露面问题,撤回此前缩片建议) [nas]
CI/CD / test (push) Successful in 6s
CI/CD / nas-deploy (push) Successful in 28s
CI/CD / nas-verify (push) Successful in 4s

This commit is contained in:
2026-08-22 09:15:41 +08:00
parent ff05207f48
commit 329ad40dd7
+32
View File
@@ -0,0 +1,32 @@
#!/bin/bash
# run_5m_standalone.sh — 5m 下载脱离主容器(2026-08-22 治本)
#
# 背景:DSM 任务原用 `docker exec sanguo_vnpy_v2` 跑 5m,进程活在主容器里,
# 任何 git push → CI nas-deploy 重启主容器 = 杀掉在跑的 5m(08-20 两案 + 08-22
# 增量段被杀,系统性脆弱三案实锤)。
#
# 修法:改用独立一次性容器(`docker run --rm`)跑**同一镜像同 tag**(主容器用
# 什么版本它就跑什么版本,CI 部署自动跟踪),主容器重启/重建永不波及本进程。
# 挂载与主容器完全一致(/volume1/stock + 代码目录),脚本内部单实例锁
# bs_5m.lock(pid 活性检测)不变,与手动补跑互斥语义保持。
#
# 部署位:NAS /volume1/stock/sanguo_5m/run_5m.sh(宿主文件,CI 不覆盖;
# 改本文件后需 scp -O 手动同步——DSM 无 SFTP 子系统)。
# DSM 任务(00:05 那条)命令改为: bash /volume1/stock/sanguo_5m/run_5m.sh
#
# 注意:镜像 tag 若将来基建重建改名,这里要跟着改(与主容器 compose 同源)。
set -u
DOCKER=/var/packages/Docker/target/usr/bin/docker
LOG=/volume1/stock/sanguo_5m/cron.log
{
echo "=== $(date '+%F %T') standalone-container 5m run start ==="
"$DOCKER" run --rm --entrypoint python \
-v /volume1/stock:/volume1/stock \
-v /volume1/homes/admin/.sanguo_projects/sanguo_vnpy_v2:/app:ro \
sanguo_vnpy_v2:lock-aligned \
/app/scripts/data_platform/bs_5m_eod.py
rc=$?
echo "=== $(date '+%F %T') standalone-container 5m run exit=$rc ==="
} >> "$LOG" 2>&1
exit "${rc:-0}"