复现而非等日志:容器内直接跑 archive_old_tasks.py 即崩。 1. app/config.py 的 admin_password 是必填字段,cron 环境没有它 → get_settings() 在 import 阶段抛 ValidationError,归档与 VACUUM 全崩。 证据:policy_versions 留 10 行(策略写的留 5 删 5)、scan_tasks_archive 0 行, 而容器 Up 且 RestartCount=0,没有任何存活信号暴露。给占位 env,不把真实口令复制进 cron。 2. VACUUM 不能在事务块里跑(ActiveSqlTransaction),原代码用了 engine.begin(), 改用 AUTOCOMMIT 连接;实测 6 张表 0.25s 完成。 3. ValidationError 把整个 settings dict 打进 stderr,被 run() 原样写进 docker 日志, 含 DB 连接串与 master key 尾部 → 加 _redact() 落盘前抹掉,验证输出中不可见。 cron 不监听 8443,镜像层 HEALTHCHECK 恒为 unhealthy,调度器真挂掉时该信号失效,故关闭。
7.6 KiB
7.6 KiB