Files
WechatOnCloud/panel
Gloridust 896a788a54 fix(image): 区分「连不上仓库」与「版本不存在」,别再回退到过期镜像 (issue #114)
用户面板 v1.4.6 却报「wechat-on-cloud:1.4.6 在本地与镜像仓库均不存在」——但该 tag 在 ghcr 与
Docker Hub 都在(实测 HTTP 200)。#107 同理:面板报 1.2.7 不存在,实测它也在(200)。

根因:probe 拿不到就返回 null,代码把「网络不通」与「tag 不存在」当同一回事 → 回退到本地可能几周前的
:latest → 用户面板是新版、实例却永远停在老镜像,还打出「很可能该版本未成功发布」的误导文案。
国内 NAS 极常见:docker pull 走加速镜像能通,但面板进程直连 registry API 不通。

修:
- probeManifest 返回判别式结果:404=missing(仓库确认没有)/ 其它非2xx与网络错误=unreachable(未知)。
  已实测两个仓库对不存在的 tag 均回 404(非 401),该判据成立。
- resolveInstanceImage:仅 missing 才回退 :latest;unreachable 时保持版本 tag(乐观),把判决权交给
  真正的 docker pull(它有镜像加速配置,多半能拉到)。文案改为网络提示,不再误导。
- ensureImage:真兜底改为基于【真实拉取失败】——拉不到且本地有 :latest 才退而求其次,并明确告知
  可能较旧、网络恢复后重新升级。
2026-07-16 20:58:15 +08:00
..