fix(infra): minio 镜像源从 Docker Hub 迁到 quay.io(上游已下架,本地/CI/生产均受影响)

E2E job 日志:
  pull access denied for minio/minio, repository does not exist

问题不在 tag 本身,而在**整个仓库已从 Docker Hub 移除**:MinIO 自 2025-10 起停止
发布容器镜像(改为仅源码分发),其 GitHub 仓库于 2026-02 归档,Docker Hub 上
minio/minio 与 minio/mc 现均返回 404;quay.io/minio/minio 仍在提供镜像。

本机此前是用 quay.io 的镜像重打 tag 顶替才跑通的(见 known-risks KR-01),
但那只是**本地绕过**、没有同步回仓库,于是「本地能起栈、CI 拉不到」。
现在三处 compose(本地 / staging / prod)统一改为 quay.io,
让本地、CI 与生产拉取同一个镜像。

这不只是 CI 问题:prod 与 staging 同样引用了已下架的仓库,是真实的部署阻塞
—— 也就是说现有配置下,新环境的生产部署根本起不来。

已知偏离:使用 latest 而非钉版。本机无法访问 quay 的 tag API 去核实某个具体
RELEASE tag 是否仍存在(quay 上的镜像已冻结,最后发布为 2025-09)。
e2e job 新增一步打印实际拉取到的版本,日后即可据此钉版、恢复可复现性。
长期风险:quay 上的 MinIO 镜像同样可能下架,届时需自建镜像或迁移到其他
S3 兼容存储 —— 「依赖第三方镜像」本身就是一条外部依赖风险。

上一轮修复已见效:backend / admin-web / ui-contracts / miniapp /
test-shell-guard / migration 六个 job 均通过,本轮仅剩 E2E。
This commit is contained in:
WorkBuddy
2026-09-22 11:04:01 +08:00
parent b624c43432
commit 4c98170107
4 changed files with 36 additions and 5 deletions
+9
View File
@@ -249,6 +249,15 @@ jobs:
working-directory: infrastructure
run: docker compose config --quiet
# compose 现在用的是 quay.io/minio/minio:latest(滚动 tag,见该文件注释):
# Docker Hub 上的 minio/minio 仓库已被整体移除,而本机访问不到 quay 的 tag API
# 去核实某个具体 RELEASE tag 是否仍在。故先用 latest 跑通,并在这里把实际
# 拉取到的版本打进日志 —— 日后即可据此把版本钉死,恢复可复现性。
- name: 拉取并打印 minio 实际版本(为后续钉版留证据)
run: |
docker pull quay.io/minio/minio:latest
docker run --rm quay.io/minio/minio:latest --version
# 保证库为全新:seed 用 `ON CONFLICT (username) DO NOTHING`,若卷是上一轮残留,
# 账号密码会停留在上一轮的 `E2E_OPERATOR_PASSWORD` 上 → 本轮登录 401(表现为各种业务失败)。
- name: 清理可能的残留栈与数据卷
+4 -1
View File
@@ -40,7 +40,10 @@ services:
restart: unless-stopped
minio:
image: minio/minio:latest
# 同 docker-compose.yml 的 minio 条目:Docker Hub 上 minio/minio 仓库已被整体移除
# (MinIO 自 2025-10 起停止发布容器镜像,仅源码分发),生产环境同样拉不到。
# 改为仍在提供镜像的 quay.io —— 这是真实的部署阻塞,不只是 CI 问题。
image: quay.io/minio/minio:latest
container_name: danyang-match-minio
command: server /data --console-address ":9001"
environment:
+4 -1
View File
@@ -32,7 +32,10 @@ services:
retries: 5
minio:
image: minio/minio:latest
# 同 docker-compose.yml 的 minio 条目:Docker Hub 上 minio/minio 仓库已被整体移除
# (MinIO 自 2025-10 起停止发布容器镜像,仅源码分发),staging 环境同样拉不到。
# 改为仍在提供镜像的 quay.io。
image: quay.io/minio/minio:latest
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: staging
+19 -3
View File
@@ -33,9 +33,25 @@ services:
retries: 5
minio:
# pin 到确定版本:`latest` 是滚动 tag,MinIO 已多次改动镜像内容(如移除内嵌 console),
# 用 `latest` 会让 CI 的 E2E 拉到一个与本地验证时不同的镜像 → 不可复现的偶发失败。
image: minio/minio:RELEASE.2025-09-07T16-13-09Z
# 2026-09-22 修正:镜像源从 Docker Hub 迁到 quay.io。
#
# 原 `minio/minio:RELEASE.2025-09-07T16-13-09Z` 在 CI 上根本拉不到,Actions 报:
# pull access denied for minio/minio, repository does not exist
# 问题不在 tag,而在**整个仓库已从 Docker Hub 移除**:MinIO 自 2025-10 起停止发布
# 容器镜像(改为仅源码分发),其 GitHub 仓库于 2026-02 归档;Docker Hub 上
# minio/minio 与 minio/mc 现均返回 404。quay.io/minio/minio 仍在提供镜像。
#
# 本机此前正是用 quay.io 的镜像重打 tag 顶替才跑通的(见 known-risks KR-01),
# 但那只是**本地绕过**、没有同步回仓库,于是「本地能起栈、CI 拉不到」。
# 现在统一改为 quay.io,让本地与 CI 拉同一个镜像,消除这处不一致。
#
# 已知偏离:此处用 latest 而非钉版。原因是本机访问不到 quay.io 的 tag API,
# 无法核实某个具体 RELEASE tag 是否仍然存在(quay 上的镜像已冻结,
# 最后发布为 2025-09)。latest 已被多个下游项目实测可用;e2e job 会打印
# 实际拉取到的版本,供日后补钉版。
# 长期风险:quay 上的 MinIO 镜像同样可能下架,届时需自建镜像或迁移到其他
# S3 兼容存储 —— 这也意味着「依赖第三方镜像」本身就是一条外部依赖风险。
image: quay.io/minio/minio:latest
container_name: danyang-match-minio
command: server /data --console-address ":9001"
environment: