From 7186a6b694c845d1e2bf862e1bd8cc79dd10639e Mon Sep 17 00:00:00 2001 From: WorkBuddy Date: Tue, 22 Sep 2026 11:16:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(infra):=20minio=20=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E9=92=89=E5=9B=9E=E7=A1=AE=E5=AE=9A=E7=89=88=E6=9C=AC=EF=BC=88?= =?UTF-8?q?=E4=BE=9D=E6=8D=AE=20CI=20=E5=AE=9E=E6=B5=8B=E8=BE=93=E5=87=BA?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一轮为让 CI 先跑通,minio 临时改用 quay.io 的 latest 滚动 tag,并在 e2e job 里 加了一步打印实际版本。该步骤的实测输出为: minio version RELEASE.2025-09-07T16-13-09Z (commit-id=07c3a429bfed…) 即 latest 当前正指向这个版本 —— 与本仓库原先在 Docker Hub 上钉的 tag 完全一致。 据此把三处 compose(本地 / staging / prod)统一钉死为 quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z,恢复「可复现」这一原则: 日后即使 quay 上的 latest 滚动到别的版本,本配置也不受影响。 保留 e2e 中「校验钉版镜像可拉取并打印版本」这一步 —— 镜像拉取失败在 compose up 里会埋进几十行输出,独立一步能在起栈前秒级暴露「上游镜像下架」这类外部依赖失效。 上一轮结果:7 个 job 全部 success,GitHub Actions 首次跑绿。 --- .github/workflows/ci.yml | 15 ++++++++------- infrastructure/docker-compose.prod.yml | 3 ++- infrastructure/docker-compose.staging.yml | 4 ++-- infrastructure/docker-compose.yml | 17 ++++++++++------- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9615bf5..8333276 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -249,14 +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 实际版本(为后续钉版留证据) + # 2026-09-22:compose 里的 minio 已从 Docker Hub 迁到 quay.io 并钉版 + # (RELEASE.2025-09-07T16-13-09Z,版本由本步骤上一轮的实测输出确认)。 + # 单独保留这一步的理由:镜像拉取失败在 compose up 里会埋进几十行输出, + # 这里能在起栈前秒级暴露「上游镜像下架」这类外部依赖失效 —— + # 上一轮正是靠日志里的 pull access denied 才定位到 MinIO 已移除 Docker Hub 仓库。 + - name: 校验 minio 钉版镜像可拉取并打印版本 run: | - docker pull quay.io/minio/minio:latest - docker run --rm quay.io/minio/minio:latest --version + docker pull quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z + docker run --rm quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z --version # 保证库为全新:seed 用 `ON CONFLICT (username) DO NOTHING`,若卷是上一轮残留, # 账号密码会停留在上一轮的 `E2E_OPERATOR_PASSWORD` 上 → 本轮登录 401(表现为各种业务失败)。 diff --git a/infrastructure/docker-compose.prod.yml b/infrastructure/docker-compose.prod.yml index 190188f..b5f8436 100644 --- a/infrastructure/docker-compose.prod.yml +++ b/infrastructure/docker-compose.prod.yml @@ -43,7 +43,8 @@ services: # 同 docker-compose.yml 的 minio 条目:Docker Hub 上 minio/minio 仓库已被整体移除 # (MinIO 自 2025-10 起停止发布容器镜像,仅源码分发),生产环境同样拉不到。 # 改为仍在提供镜像的 quay.io —— 这是真实的部署阻塞,不只是 CI 问题。 - image: quay.io/minio/minio:latest + # 版本与本地/CI 保持一致,钉死为 CI 实测确认可用的 RELEASE.2025-09-07T16-13-09Z。 + image: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z container_name: danyang-match-minio command: server /data --console-address ":9001" environment: diff --git a/infrastructure/docker-compose.staging.yml b/infrastructure/docker-compose.staging.yml index e3b008a..be1e8b6 100644 --- a/infrastructure/docker-compose.staging.yml +++ b/infrastructure/docker-compose.staging.yml @@ -34,8 +34,8 @@ services: minio: # 同 docker-compose.yml 的 minio 条目:Docker Hub 上 minio/minio 仓库已被整体移除 # (MinIO 自 2025-10 起停止发布容器镜像,仅源码分发),staging 环境同样拉不到。 - # 改为仍在提供镜像的 quay.io。 - image: quay.io/minio/minio:latest + # 改为仍在提供镜像的 quay.io,并钉死为与本地/CI 一致的 RELEASE.2025-09-07T16-13-09Z。 + image: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: staging diff --git a/infrastructure/docker-compose.yml b/infrastructure/docker-compose.yml index a9bbce2..ab2779c 100644 --- a/infrastructure/docker-compose.yml +++ b/infrastructure/docker-compose.yml @@ -45,13 +45,16 @@ services: # 但那只是**本地绕过**、没有同步回仓库,于是「本地能起栈、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 + # 版本来源(2026-09-22 于 CI 实测):迁移初期先用了 quay.io 的 latest, + # 并在 e2e job 里打印实际版本,得到 + # minio version RELEASE.2025-09-07T16-13-09Z (commit-id=07c3a429bfed…) + # 即 latest 当前正指向这个版本 —— 与本仓库原先在 Docker Hub 上钉的 tag 完全一致。 + # 现在据此钉死,恢复「可复现」这一原则(若日后 quay 上的 latest 滚动到别的版本, + # 本配置不受影响)。 + # 长期风险:quay 上的 MinIO 镜像已冻结(最后发布 2025-09),同样可能下架, + # 届时需自建镜像或迁移到其他 S3 兼容存储 —— + # 「依赖第三方镜像」本身就是一条外部依赖风险。 + image: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z container_name: danyang-match-minio command: server /data --console-address ":9001" environment: