Alpine中composer install卡住主因是缺失ca-certificates包导致TLS握手失败;须首条RUN单独执行apk add --no-cache ca-certificates,且COPY composer.json与composer.lock需紧邻WORKDIR、早于其他COPY,同时提交lock文件并禁用cache.vcs以保障缓存复用与构建稳定。

Alpine里composer install卡住,90%是ca-certificates没装
不是网络差,是TLS握手直接失败。Alpine默认不带根证书,curl、wget、composer全会哑火,报错类似 SSL certificate problem: unable to get local issuer certificate 或直接超时中断。
必须在第一条 RUN 就单独装证书:
RUN apk add --no-cache ca-certificates
- 别和
git、unzip合并在一条RUN里——Alpine的apk对包依赖顺序敏感,ca-certificates必须最先就位 - 这条命令之后才能执行
composer config -g或composer install - 如果用
php:8.3-cli-alpine这类镜像,它通常已预装,但别假设——加一行apk info ca-certificates验证更稳
镜像源配置三要素:repo.packagist + composer + 末尾斜杠
在 Alpine 容器里写 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 才生效。漏掉任意一个,就会静默 fallback 到 packagist.org。
-
repo.packagist是唯一合法键名,repos.packagist或repository.packagist全无效 -
composer是必须显式的type值,小写,不可省略 - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出/composerpackages.json,404) - 验证是否真写进去了:
composer config -g repo.packagist输出必须是完整 JSON,例如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
Docker多阶段构建中,每阶段都得重配镜像源
宿主机的 composer config -g 不透传,builder 阶段配了,final 阶段照样走官方源。尤其当两个阶段用不同基础镜像(比如 builder 用 php:8.3-cli-bullseye,final 用 php:8.3-fpm-alpine),连 PHP 版本和证书路径都不一致。
- 每个含
composer install的RUN前,都要加配置命令:RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - Alpine final 阶段还得补证书:
RUN apk add --no-cache ca-certificates -
COPY composer.json composer.lock ./必须紧挨WORKDIR,且早于其他COPY,否则 Docker 缓存失效,每次重下包
缓存清理别只清 files/,vcs/ 才是 inode 杀手
长期构建后报 No space left on device,往往不是磁盘满,而是 ~/.composer/cache/vcs/ 耗尽 inodes——每个 Git 裸仓库动辄几百 MB、上千个文件。
- 临时救急:
rm -rf ~/.composer/cache/vcs/* - 一劳永逸:
composer config --global cache.vcs false,强制所有包走--prefer-dist,彻底避开 Git 克隆 - 别删整个
cache/files/——里面 .zip 包常被多个项目共用,删错会导致重复下载 - 生产镜像里绝不能
COPY --from=build-stage ~/.composer/cache,只复制/app/vendor
composer install 卡在 Resolving dependencies,说明 composer.lock 已失效或平台约束不匹配,这时候换源没用,得先检查 platform.php 和锁文件一致性。


















