1. 计划与风险评估
1.1 兼容性评估
在 Docker 下运行的 WordPress,要升级到新的 PHP 版本,首要任务是评估兼容性。WordPress 核心版本、常用插件与主题的兼容矩阵需要逐一核对,确保对新 PHP 版本没有已知不兼容的问题。
同时需要关注 托管环境的镜像标签、Base OS 与 PHP 版本之间的依赖。仅在测试环境中完成验证,避免在生产环境引入未测试的改变。
1.2 回滚与风险控制
回滚策略应在升级前明确:保留完整数据与 wp-content 的快照、确保数据库导出可用、并在无痛点情况下快速回滚到旧镜像。

在生产环境中,通常采用蓝绿部署或滚动升级来降低风险。通过 分阶段升级,先在非生产节点验证后再扩展到全部实例。
2. 环境准备与备份
2.1 数据库与站点文件备份
先对数据库进行备份,命令如 mysqldump,并对 wp-content、上传文件进行归档。这样即使升级失败,也能快速恢复到原状。
# 使用 mysqldump 备份 WordPress 数据库
docker exec -i mysql-container mysqldump -u root -pYourPass wordpress_db > wordpress_backup.sql# 备份 wp-content 目录
tar czf wordpress_wpcontent_backup.tar.gz -C /var/www/html/wp-content .
另外,记录当前 PHP 版本与扩展清单,便于对比升级前后差异。环境基线信息是后续验证的关键。
2.2 目标版本与镜像选择
选择目标 PHP 版本时要考虑 Long-Term Support(LTS)与安全更新周期。目标版本应优先获得官方长期维护,并且与 WordPress、插件最小版本要求匹配。
在 Dockerfile 与 docker-compose 中明确镜像标签,比如选择 wordpress:php8.2-fpm 以获得稳定的 FPM 支持。不同的镜像标签会影响扩展安装和配置路径。
3. 容器与镜像变更实现
3.1 更新 Dockerfile 与基础镜像
通过扩展 WordPress 官方镜像来实现 PHP 升级,可以在 Dockerfile 中指定新的基础镜像标签,并安装需要的扩展。注意,不要直接替换主镜像而不处理扩展兼容。
在构建阶段,可以开启缓存层以提升后续构建速度,并对 PHP 扩展进行分步安装与验证。分步安装有助于快速定位问题。
# Dockerfile 示例:基于官方 WordPress 镜像升级 PHP
FROM wordpress:php8.2-fpm# 安装常用 PHP 扩展
RUN docker-php-ext-install pdo_mysql exif \&& docker-php-ext-enable pdo_mysql# 复制自定义配置
COPY php.ini-production /usr/local/etc/php/php.ini
3.2 更新 docker-compose 配置
在 docker-compose.yml 中升级服务镜像标签,并确保数据库与文件卷配置保持一致。版本对齐是关键,避免容器内 PHP 与 MySQL 的交互异常。
同时,可以调整环境变量与卷挂载路径,确保 WordPress 能正确读取配置与上传文件。环境一致性是稳定升级的基础。
# docker-compose.yml 示例
version: "3.8"
services:wordpress:image: wordpress:php8.2-fpmdepends_on:- dbports:- "8080:9000"volumes:- ./wp-content:/var/www/html/wp-content- ./uploads:/var/www/html/wp-content/uploadsenvironment:WORDPRESS_CONFIG_EXTRA: |-define('WP_MEMORY_LIMIT', '256M');define('UPLOADS', 'wp-content/uploads');db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: example
volumes:db_data:
4. 部署与测试
4.1 构建、启动与初次验证
执行 docker-compose up -d 启动服务,再通过容器内执行 php -v 验证 PHP 版本是否已切换。首次验证应关注 WordPress 是否能正常加载首页。
如果需要直接进入容器内部执行诊断命令,可以使用 docker exec。这一步有助于快速定位路径、配置或扩展的错误。
# 构建并启动
docker-compose pull
docker-compose up -d# 验证 PHP 版本
docker-compose exec wordpress php -v# 测试访问站点
curl -I http://localhost:8080
4.2 兼容性与性能验收
访问主页后还应验证插件、主题、联系表单等功能是否正常。浏览功能、表单、媒体上传等常用场景要逐项测试。
另外,PHP 的新版本往往对性能有影响,需观察 OPcache、内存限制、执行时间等配置项的变化是否带来收益或回退。
5. 监控、优化与经验
5.1 常见问题与解决经验
常见问题包括扩展安装失败、路径权限错误、数据库连接失败等。定位策略是先确认容器日志,再检查挂载卷的权限。
在本次实战中,使用官方镜像标签与稳定扩展版本,显著降低了不兼容风险;同时,逐步升级而非一次性全量变更,减少了停机时间。
# 查看日志
docker-compose logs wordpress# 简单诊断:列出扩展
docker-compose exec wordpress php -m
5.2 监控、回滚与持续改进
留存的 回滚计划包括快速回滚到旧镜像、恢复备份与重新启动容器。生产环境应具备快速切换到旧镜像的能力。
为了持续改进,记录版本、扩展、配置的变更,形成可复现的升级脚本,可帮助团队以后重复执行同样的流程。变更记录与自动化是长期稳定的关键。


