镜像仅加速元数据(packages.json等索引),不托管zip包,实际下载仍直连github.com;需清缓存、删vendor和composer.lock并重装才能生效。

单纯换 Composer 镜像源对构建速度的提升非常有限,甚至可能没效果——因为镜像只加速元数据(packages.json),不加速 ZIP 包下载;实际包仍直连 github.com 或 codeload.github.com,卡在 Downloading https://api.github.com/ 是常态。
镜像到底加速了什么?
阿里云、腾讯云等镜像只代理索引类资源:包括 packages.json、p2/ 下的 provider 文件,以及 dist 路径前缀的 ZIP 包 URL。但 ZIP 包本身仍由 GitHub 托管,镜像服务器不做存储或重分发。
这意味着:
- 元数据加载快(
Reading packages.json from cache at .../https---mirrors-aliyun-com-composer/) - 但真正耗时的
Downloading https://codeload.github.com/.../archive/refs/tags/...仍走原链路 -
composer install -vvv日志里反复出现 GitHub 域名 → 镜像没起作用
为什么配了镜像还是卡在 Downloading?
常见错误现象是进度条停在 “Downloading” 不动,且无网络请求发出。这通常不是镜像失效,而是缓存干扰:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer clear-cache必须执行(注意不是composer cache-clear,后者已废弃) - 旧缓存中残留的
packages.json仍指向packagist.org,Composer 会优先读它并尝试从官方源拉取 provider 数据 - DNS 解析失败或 TLS 握手超时卡在
https://packagist.org,而非镜像地址 - 临时验证可用
composer install --no-cache -vvv | grep "mirrors-aliyun"
Docker 构建中镜像配置为何常失效?
容器内默认不读取宿主机的 ~/.composer/config.json,每次构建都是全新上下文。
- 推荐写法:
RUN composer install --repository=https://mirrors.aliyun.com/composer/ - 次选写法:
RUN composer config --global repo.packagist composer https://mirrors.aliyun.com/composer/,但必须确保该命令在composer install前执行 - 不要依赖
COMPOSER_HOME环境变量指向错误路径(如/root/.composer而容器用户是www-data) - CI 中更建议用
--repository-url参数,避免用户权限和配置路径错位
项目级配置覆盖全局配置的陷阱
只要项目根目录的 composer.json 含有 "repositories" 字段(哪怕空数组 []),全局镜像就会被完全忽略。
- 验证方式:
composer show -p | grep repositories,输出应含镜像地址 - 若项目需保留私有源,正确做法是进项目根目录运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g),它会自动追加到repositories数组末尾 - 改完后必须删掉
vendor/和composer.lock,再跑composer install,否则 lock 文件仍记录旧 dist URL
最易被忽略的一点:镜像配置只是“让 Composer 知道去哪找索引”,但它无法绕过 GitHub 的访问瓶颈。真要解决卡顿,得配合 --prefer-dist、合理设置 cache-files-dir、甚至用 git clone 替代 ZIP 下载(当镜像同步延迟严重时)。










