升级PHP至8.2后Docker-Compose构建报错:Cannot find config.m4
排查与解决建议
1. 清理Docker镜像缓存
Ubuntu服务器可能留存了损坏的旧镜像缓存,先彻底清理再重新拉取:
docker rmi php:8.2-apache docker pull php:8.2-apache
构建时强制跳过缓存:
docker-compose up -d --build --no-cache
2. 调整Dockerfile中的扩展安装逻辑
- 先补全编译依赖(部分服务器环境可能缺少基础依赖包):
RUN apt-get update && apt-get install -y libmysqlclient-dev && rm -rf /var/lib/apt/lists/* - 尝试先解压PHP源码再安装扩展(确保扩展源码目录存在):
注:RUN docker-php-source extract \ && docker-php-ext-install pdo_mysql \ && docker-php-source deletepdo是PHP核心扩展,默认已启用,无需单独安装,可通过php -m命令验证。
3. 升级Docker及Docker Compose版本
Ubuntu服务器上的旧版Docker可能不兼容PHP 8.2镜像的新特性,先查看当前版本:
docker --version docker-compose --version
卸载旧版本后安装官方稳定版Docker,同时升级Docker Compose到对应兼容版本。
4. 更换镜像标签或源
- 使用指定版本的镜像标签,避免拉取到不稳定的快照版本:
FROM php:8.2.0-apache - 国内服务器可切换国内镜像源加速拉取,在Dockerfile开头添加:
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
5. 手动排查镜像内环境
启动临时容器进入镜像,手动执行安装命令定位问题:
docker run -it --rm php:8.2-apache bash
容器内依次执行:
docker-php-source extract cd /usr/src/php/ext/pdo_mysql/ ls -l # 确认config.m4文件是否存在 docker-php-ext-install pdo_mysql # 手动执行看具体报错
如果手动执行也报错,说明镜像本身有问题,换标签或镜像源;如果正常,检查Dockerfile后续步骤是否破坏了环境。
内容的提问来源于stack exchange,提问作者randy
相关产品推荐
相关产品推荐

