多阶段 Docker 构建中优化 Composer 缓存的核心是精准分阶段:builder 阶段用完整镜像+BuildKit 缓存挂载执行 composer install --no-dev --optimize-autoloader,final 阶段用精简镜像仅复制 vendor/ 和代码,避免残留缓存与 dev 依赖。

在多阶段 Docker 构建中优化 Composer 缓存层,核心是让依赖安装过程能复用已缓存的 vendor 文件,同时避免把 dev 依赖、临时文件、缓存目录等打进最终镜像。关键不在于“怎么清缓存”,而在于“怎么让缓存生效且不残留”。
分阶段分离依赖安装与运行时环境
利用多阶段构建天然隔离的特性,在 builder 阶段完成 composer install,并只复制 vendor 和必要文件到 final 阶段:
- builder 阶段使用带 curl、git、unzip 的完整 PHP 镜像(如 php:8.2-cli),并挂载 composer cache 到构建上下文外的缓存目录(如 --cache-from)或用 BuildKit 的缓存挂载
- final 阶段用极简镜像(如 php:8.2-cli-alpine 或 php:8.2-slim),只 COPY vendor/、autoload.php、应用代码,不 COPY composer.lock 或 .composer 目录
- 确保 builder 阶段执行的是 composer install --no-dev --optimize-autoloader --classmap-authoritative,跳过开发依赖并生成高效加载器
启用 BuildKit + 缓存挂载(推荐)
启用 BuildKit 后,可用 RUN --mount=type=cache 让 Composer 自动复用缓存,无需手动管理 ~/.composer/cache:
标签: php js git json docker composer app curl ai 解压
还木有评论哦,快来抢沙发吧~