DIP1 工作日志 — §A 环境网络阻塞解除(Docker 镜像加速 + 服务就绪)¶
DWLG 编号:DWLG-20260809-03 日期:2026-08-09 参与方:TL(司徒)/ DT(听写) 关联文档:DIP1-IMP V2.0 §4 / §A / §7.1;DWLG-20260809-01(阻塞记录)/ DWLG-20260809-02(骨架交付) 关联 Issue:无(TL 主导处置,非 SFM 反馈) 前置状态:DWLG-01 记录的 Docker Hub 不可达 + EDB 403 双重阻塞
一、工作内容¶
针对 DWLG-20260809-01 记录的网络阻塞,TL 介入完成全链路诊断与处置:
- 本地资源盘点:确认 Docker Desktop v29.6.2 daemon 运行正常,但本地零镜像;PostgreSQL/Redis 均未本地安装。
- 网络连通性矩阵测试:对 Docker Hub 直连 + 7 个国内镜像源 + EDB + GitHub + postgresql.org 共 11 个目标逐一 TCP/HTTP 探测。
- 镜像源可用性验证:用 daocloud 前缀实际拉取 postgres:16-alpine 验证可拉取性(TCP 通 ≠ 能拉取)。
- 全量镜像拉取 + retag:拉取 4 个所需镜像并 retag 为标准名,采用零风险策略(不改 daemon.json、不重启 Docker)。
- docker-compose 启动 + 连通性验证:4 服务全部 healthy,PG/Redis/Mailpit/Jaeger 连通性逐项验证通过。
二、诊断结论(根因定位)¶
| 目标 | 连通性 | 说明 |
|---|---|---|
| Docker Hub 直连 (registry-1.docker.io:443) | ❌ 不可达 | 被墙,DWLG-01 阻塞根因 |
| docker.m.daocloud.io | ✅ 可用 | DaoCloud 镜像,本次采用 |
| docker.nju.edu.cn | ✅ 可用 | 南京大学镜像(备选) |
| docker.1ms.run | ✅ 可用 | 1ms 镜像(备选) |
| dockerproxy / ustc / 163 / baidu | ❌ 均不可用 | 公共镜像源已关闭 |
| EDB 下载站 (enterprisedb.com) | ✅ HTTP 200 | 网站可达,DWLG-01 报 403 为 winget 直链问题 |
| GitHub / postgresql.org | ✅ 可用 | 备选方案可用 |
根因:Docker Hub 直连被墙,daemon.json 未配置任何镜像加速器,仅有 Docker Desktop 默认内部代理 http.docker.internal:3128(该代理无法出海),导致全部镜像拉取失败。
三、处置方案与执行¶
方案选择:镜像源前缀拉取 + retag(零风险,不重启 Docker)¶
未采用「修改 daemon.json + 重启 Docker」方案,原因:重启 Docker Desktop 会中断用户可能运行的其他容器,且 Docker Desktop 退出时可能覆盖外部对 daemon.json 的修改。改用 retag 策略立即解除阻塞。
执行结果¶
| # | 镜像 | 来源 | 大小 | 标准 tag |
|---|---|---|---|---|
| 1 | postgres | docker.m.daocloud.io/library/postgres:16-alpine | 420MB | postgres:16-alpine ✅ |
| 2 | redis | docker.m.daocloud.io/library/redis:7.2-alpine | 56.9MB | redis:7.2-alpine ✅ |
| 3 | mailpit | docker.m.daocloud.io/axllent/mailpit:latest | 50.9MB | axllent/mailpit:latest ✅ |
| 4 | jaeger | docker.m.daocloud.io/jaegertracing/all-in-one:1.60 | 113MB | jaegertracing/all-in-one:1.60 ✅ |
docker-compose 服务状态¶
NAME IMAGE STATUS PORTS
dip1-postgres-1 postgres:16-alpine Up (healthy) 5432->5432
dip1-redis-1 redis:7.2-alpine Up (healthy) 6379->6379
dip1-mailpit-1 axllent/mailpit:latest Up (healthy) 1025->1025, 8025->8025
dip1-jaeger-1 jaegertracing/all-in-one:1.60 Up 4317->4317, 16686->16686
连通性验证¶
| 服务 | 验证命令 | 结果 |
|---|---|---|
| PostgreSQL 16.14 | pg_isready -U dip1 -d dip1_dev |
✅ accepting connections;dip1_dev 库已创建 |
| Redis 7.2.15 | redis-cli ping |
✅ PONG |
| Mailpit Web UI | GET http://localhost:8025 |
✅ HTTP 200 |
| Jaeger UI | GET http://localhost:16686 |
✅ HTTP 200 |
四、产出物¶
| 类型 | 路径 | 说明 |
|---|---|---|
| 镜像 | 本地 Docker 4 镜像 | postgres:16-alpine / redis:7.2-alpine / mailpit:latest / jaeger:1.60 |
| 容器 | dip1-postgres-1 / dip1-redis-1 / dip1-mailpit-1 / dip1-jaeger-1 | 全部 healthy |
| 日志 | 本文件 DWLG-20260809-03 | 阻塞解除全程记录 |
五、长期建议(待 TL 决策)¶
建议 1:配置 Docker 镜像加速器(持久化方案)¶
当前 retag 策略为一次性处置。若后续镜像被删或换机器,需重复手动拉取。建议通过 Docker Desktop GUI → Settings → Docker Engine 添加 registry-mirrors(由 Docker 自身管理 daemon.json,避免覆盖冲突):
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.1ms.run"
]
}
配置后点 "Apply & Restart",后续 docker pull 直连标准镜像名即可自动走加速器。⚠ 此操作会重启 Docker,请在无运行中容器时执行。
建议 2:PATH 持久化¶
当前 Docker CLI(C:\Program Files\Docker\Docker\resources\bin\)未注入系统 PATH,Code Agent 脚本若直接调用 docker 会报 "not recognized"。建议将该路径加入用户环境变量 PATH(Docker Desktop 安装时通常应自动配置,疑似安装后未刷新 shell)。
建议 3:DB 环境就绪后 Code Agent 可推进项¶
环境阻塞解除后,DWLG-02 待办 #2(Alembic 0001+0002 三循环验证)可立即执行。建议 Code Agent 下一步:
1. 执行 alembic upgrade head 验证 22 表迁移
2. 执行 alembic downgrade base → upgrade head 循环验证可逆性
3. 跑种子数据 CLI:python -m app.infrastructure.db.seed.cli
4. 推进 C-B1(QSV)持久化集成测试
六、问题与待办¶
| # | 问题 | 状态 | 负责人 | 截止 |
|---|---|---|---|---|
| 1 | Docker Hub 网络阻塞 | ✅ 已解除 | TL | 2026-08-09 完成 |
| 2 | PG/Redis 容器服务就绪 | ✅ 已就绪 | TL | 2026-08-09 完成 |
| 3 | 镜像加速器持久化配置(建议 1) | 🟡 待 TL 决策 | TL | 2026-W33 |
| 4 | Docker CLI PATH 持久化(建议 2) | 🟡 待 TL 配置 | TL | 2026-W33 |
| 5 | Alembic 迁移三循环验证(原 DWLG-02 #2) | 🟢 可启动 | Code Agent | 环境就绪后 1d |
七、状态矩阵更新¶
DIP1-IMP §7.1 矩阵变更: - C-A0(§A 环境 9 项基线):🟡 → 🟢(Python/Docker/依赖/PG/Redis/Mailpit/Jaeger 全部就绪) - C-B1(QSV 报价域):🟢(核心计算+接口+单测 OK)→ 持久化集成测试可启动 - C-C3/C-C4(RN 双端):🟡(不变,待 §C 阶段)
修订记录¶
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| V1.0 | 2026-08-09 | DT | 创建:环境网络阻塞解除全程记录(诊断+处置+验证+长期建议) |
本记录由听写(DT)根据 TL 主导的处置全过程整理。环境阻塞已解除,Code Agent 可恢复 DB 相关工作。