为什么用 Docker 部署 WordPress?
环境一致性
消除“在我机器上能运行”的问题,开发、测试和生产环境使用相同的容器镜像。
依赖项(PHP、MySQL、Web 服务器)被封装在容器中,避免版本冲突。
快速部署与扩展
一键启动 WordPress、MySQL、Nginx 等服务,无需手动配置。
通过 docker-compose 定义多容器架构,轻松水平扩展。
资源隔离与安全
每个服务(如数据库、PHP)运行在独立容器中,降低安全风险。
容器崩溃不会影响宿主机或其他服务。
版本控制与回滚
通过 Docker 镜像版本管理,可快速回滚到旧版 WordPress 或插件。
如何用 Docker 部署 WordPress?
1. 基础部署(使用 Docker Compose)
创建一个 docker-compose.yml 文件,定义 WordPress 和 MySQL 服务:
version: '3.8' services: wordpress: image: wordpress:latest ports: - "80:80" environment: - WORDPRESS_DB_HOST=db - WORDPRESS_DB_USER=wpuser - WORDPRESS_DB_PASSWORD=wppassword - WORDPRESS_DB_NAME=wpdb volumes: - wordpress_data:/var/www/html depends_on: - db db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=wpdb - MYSQL_USER=wpuser - MYSQL_PASSWORD=wppassword volumes: - mysql_data:/var/lib/mysql volumes: wordpress_data: mysql_data:
运行以下命令启动服务:
docker-compose up -d
2. 访问 WordPress
浏览器打开 http://localhost 或服务器 IP,完成 WordPress 安装向导。
数据库配置自动关联到 db 容器,无需手动输入。
进阶配置
1. 持久化数据
使用 volumes 确保 WordPress 文件(主题、插件)和 MySQL 数据在容器重启后不丢失。
示例中已通过 wordpress_data 和 mysql_data 卷实现。
2. 自定义 Web 服务器
默认使用 Apache,可替换为 Nginx:
web: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - wordpress
3. 性能优化
缓存:添加 Redis 或 Memcached 容器。
CDN 整合:通过环境变量配置 WordPress 插件(如 WP Super Cache)。
资源限制:在 docker-compose.yml 中为容器设置 CPU/内存限制。
4. HTTPS 支持
使用 Let’s Encrypt 证书,通过 traefik 或 nginx-proxy 容器自动管理 SSL。
注意事项
数据备份
定期备份 Docker 卷(wordpress_data 和 mysql_data)。
使用 mysqldump 导出数据库快照。
安全性
避免在环境变量中硬编码敏感信息,改用 Docker Secrets 或 .env 文件。
定期更新 Docker 镜像(如 wordpress:latest 和 mysql:5.7)。
调试
使用 docker logs
进入容器调试:docker exec -it wordpress_container bash。
适用场景
本地开发:快速搭建隔离的 WordPress 环境。
微服务架构:将 WordPress 与其他服务(如 Node.js API)结合。
CI/CD 流水线:自动化测试和部署容器化 WordPress。
总结
Docker 是部署 WordPress 的理想选择,特别适合需要环境隔离、快速迭代和可扩展性的场景。通过合理配置,可以显著提升开发和运维效率,同时确保稳定性与安全性。