Ubuntu下Docker Compose运行Symfony项目web-app服务构建失败报错
报错原因
这个报错是构建web-app服务镜像时,PHP源码编译流程异常退出导致的,返回码2通常对应以下几类问题:
- 网络访问失败:命令中使用的
php.net源码地址、ha.pool.sks-keyservers.net密钥服务器在国内网络环境下经常出现连接超时、资源404的情况,GPG密钥拉取失败、PHP源码包下载校验不通过都会直接中断构建 - 依赖版本不兼容:你使用的Ubuntu基础镜像的软件源内依赖库版本和待编译的PHP版本不匹配,比如PHP7.x系列不支持Ubuntu 22.04+默认的libssl3,会在configure阶段报错退出
- 系统资源不足:编译PHP对CPU、内存要求较高,Docker分配的内存低于2G时,多线程并行编译很容易出现内存溢出导致进程中断
- 本地构建缓存损坏:之前的构建残留的损坏缓存、apt源缓存异常也会导致依赖安装失败
修复方案
- 替换不可用的外部地址:将PHP源码下载地址替换为国内镜像站地址,将GPG密钥服务器替换为
hkp://keyserver.ubuntu.com,解决网络访问问题 - 适配依赖版本:如果编译的是PHP7.x版本,在Ubuntu 22.04+系统下将依赖中的
libssl-dev替换为libssl1.1-dev,避免版本不兼容问题 - 调整编译参数:构建时将
make -j"$(nproc)"修改为make -j2,限制并行编译进程数,同时给Docker分配至少4G内存,避免资源不足 - 清理缓存重试:执行
docker system prune -a清理本地无用镜像和构建缓存后,再执行docker-compose up --build重新构建
如果你不需要定制PHP编译参数,建议直接使用官方预编译的PHP镜像作为基础镜像,仅安装Symfony依赖的扩展即可,完全规避源码编译带来的各类问题。
内容的提问来源于stack exchange,提问作者Oubaid Ghoorun
相关产品推荐
相关产品推荐

