必须将华为云镜像源写入composer.json的repositories.packagist字段,地址为https://repo.huaweicloud.com/repository/php/(含末尾斜杠),并删除旧vendor和composer.lock后执行composer install --prefer-dist。

华为云容器服务里 Composer 镜像必须用项目级配置
全局配置(composer config -g)在容器里基本无效——因为每次构建都是新环境,~/.composer/config.json 不持久,且 CI 流水线用户(如 runner)和你本地执行命令的用户不一致。真正能落地的,是把镜像源写进 composer.json。
直接在项目根目录运行:
composer config repo.packagist composer https://repo.huaweicloud.com/repository/php/
这条命令会自动向 composer.json 写入 "repositories": {"packagist": {...}} 块,key 必须是 packagist,不能改成 huawei 或其他名字。提交后所有协作者、CI 构建、容器启动都复用同一套源,不会因环境差异导致 composer.lock hash 不一致。
- 别手动编辑
composer.json:容易漏掉"type": "composer"或写错字段名 - 如果已有
"repositories": [](空数组),先删掉再运行上面命令;否则会报错 - 确认写入成功:打开
composer.json,检查"repositories"下是否只有"packagist"一个 key,且url值为https://repo.huaweicloud.com/repository/php/(末尾斜杠不能少)
华为云镜像地址必须用 repo.huaweicloud.com,不是 mirrors
2026 年实测唯一稳定可用的地址是 https://repo.huaweicloud.com/repository/php/。旧教程里常见的 https://mirrors.huaweicloud.com/... 全部返回 404,https://repo.huaweicloud.com/composer/ 缺少 /repository/php/ 路径也会失败。
协议、路径、斜杠三者缺一不可:
-
http://会被 Composer 默认的secure-http=true拦截,必须用https:// -
/repository/php/是硬性路径,少一级(比如写成/composer/)就 404 - 末尾
/必须存在,https://repo.huaweicloud.com/repository/php❌
CI 构建脚本里要清缓存 + 强制重装
即使镜像配置正确,旧缓存也可能让 Composer 继续尝试连接 packagist.org。在华为云 DevCloud 的 .buildspec.yml 或构建脚本开头加这三行:
composer clear-cache<br>rm -rf vendor composer.lock<br>composer install --no-interaction --prefer-dist
尤其注意 composer.lock 必须删掉——它记录的是上一次解析时的源信息,不删就会沿用旧元数据,镜像配置形同虚设。
- 不要依赖
composer update:它会重新解析依赖,但可能卡在Resolving dependencies,和镜像无关 -
--prefer-dist能跳过源码克隆,加速下载,适合容器构建场景 - 如果构建中提示 SSL 错误,不是镜像问题,而是系统 CA 证书陈旧,需在 Dockerfile 里加
apt-get update && apt-get install -y ca-certificates
华为云 ECS 容器内网加速只认完整 URL
华为云镜像的内网加速能力只在 ECS 实例内部生效,且前提是请求域名和路径完全匹配 https://repo.huaweicloud.com/repository/php/。任何拼写偏差(比如多一个 s 在 repos.packagist)、协议错误或路径缺失,都会 fallback 到公网,失去加速效果。
验证是否走内网:
- 进容器运行
composer install -vvv,看日志里Downloading行的域名是不是repo.huaweicloud.com - 用
curl -I https://repo.huaweicloud.com/repository/php/packages.json测试响应时间,内网通常 300ms - 如果仍慢,检查容器网络模式:host 模式或 VPC 内网直连才触发加速,NAT 或桥接模式可能绕过
最易被忽略的点:镜像配置本身没问题,但 composer.json 里存在空 "repositories": [] 或显式写死 "url": "https://packagist.org",会直接屏蔽所有镜像设置。











