Docker部署PHP 8.2遇公钥不可用错误且容器仍为PHP8.1的解决求助
问题解决方案
一、解决容器内PHP版本未更新的问题
- 强制清理Docker构建缓存,确保拉取并使用新的PHP 8.2基础镜像:
执行命令:docker-compose build --no-cache,完成后启动容器:docker-compose up -d - 检查Dockerfile后续指令,确认没有手动安装PHP 8.1包、引入第三方PPA源等会覆盖版本的操作。
二、解决APT仓库公钥验证错误
PHP 8.2官方镜像基于的Debian版本(如Bookworm)可能使用了新的APT仓库密钥,需在Dockerfile中补充密钥更新步骤:
- 替换基础镜像后,添加以下指令修复密钥问题:
FROM php:8.2-apache # 更新APT仓库并补充缺失的公钥 RUN apt-get update && apt-get install -y --no-install-recommends gnupg2 \ && curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/php-archive-keyring.gpg \ && echo "deb [signed-by=/usr/share/keyrings/php-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/php.list \ && apt-get update
- 若仍有问题,可替换为国内镜像源(如阿里云),同时解决密钥和下载速度问题:
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \ && apt-get update
三、验证结果
- 重新构建并启动容器:
docker-compose up -d --build --no-cache - 进入容器验证PHP版本:
docker exec -it [容器名/ID] php -v,确认输出为PHP 8.2.x系列版本 - 执行
apt-get update,确认不再出现公钥验证错误
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

