WordPress 建站指南 Docker安装实战:官方镜像完整指南
很多人装 WordPress 首先想到的是 Lnmp(Linux + Nginx 性能调优 + MySQL + PHP)一键包,或者宝塔面板。但 Docker 容器化部署正在成为更灵活的选择——尤其当你需要同时跑多个站点、或者想快速迁移环境的时候。
这篇文章说透一件事:用 Docker 官方镜像在 VPS 配置避坑 上部署 WordPress,包括步骤、坑和验证过的配置。
先说结论:你适合用 Docker 装 WordPress 吗
适合的场景:
不适合的场景:
- 只跑一个 WordPress 站点,不想引入额外复杂度
- VPS 内存极小(<1GB),Docker 本身有开销
- 需要对 PHP 或数据库做非常细粒度的系统级调优
- 主机商已经提供一键 WordPress 安装,不想折腾
原理:Docker 怎么跑 WordPress
WordPress 本质上是一个 PHP 应用 + MySQL 数据库。官方 Docker 镜像把这两个组件分别做成两个容器:
- **`wordpress`容器**:运行 Apache + WordPress PHP 代码
- **`mysql`容器**:运行数据库
它们之间通过网络通信。docker-compose.yml 定义两个服务,Docker Compose 自动管理它们的生命周期。
步骤一:安装 Docker 和 Docker Compose
验证过:Ubuntu 开发环境 24.04 LTS 上安装 Docker 官方方式。
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 验证安装
docker --version
# 输出:Docker version 29.4.0, build ... (2026年4月最新稳定版)
# 安装 Docker Compose(独立二进制)
curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
# 输出:Docker Compose version v2.24.0
如果系统有 docker compose(v2+内置),可以直接用 docker compose 替代 docker-compose。
步骤二:创建 docker-compose.yml
在你想放 WordPress 数据的目录创建文件:
version: '3.8'
services:
wordpress:
image: wordpress:latest
container_name: wordpress-app
restart: unless-stopped
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: your_strong_password_here
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-data:/var/www/html
depends_on:
mysql:
condition: service_healthy
mysql:
image: mysql:8.0
container_name: wordpress-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_strong_password_here
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: your_strong_password_here
volumes:
- ./mysql-data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
关键配置说明:
- **`wordpress:latest`**:截至2026年4月,官方镜像 latest tag 对应 WordPress 6.9.4(stable)。如果你想用特定版本,改成 `wordpress:6.9.4` 或 `wordpress:php8.3`。
- **`ports: "8080:80"`**:宿主机 8080 映射容器 80(Apache 端口)。这样 Nginx 可以做反向代理。
- **`depends_on` + `condition: service_healthy`**:确保 MySQL 完全启动后再启动 WordPress,避免连接失败。
- **`healthcheck`**:MySQL 就绪检测,ping 通才算启动完成。
步骤三:启动并验证
# 在 docker-compose.yml 所在目录执行
docker-compose up -d
# 查看运行状态
docker-compose ps
# 应该看到 wordpress-app 和 wordpress-mysql 都是 "Up" 状态
# 查看启动日志(第一次启动会拉取镜像,等待1-2分钟)
docker-compose logs -f wordpress
启动成功后,访问 http://your-vps-ip:8080 应该能看到 WordPress 安装向导。
验证版本:
docker exec wordpress-app cat /var/www/html/wp-includes/version.php | grep "wp_version"
# 输出:wp_version = '6.9.4'
步骤四:Nginx 反向代理(可选但推荐)
既然已经用了 Docker,直接把 80/443 端口暴露给 Docker 不太安全。推荐用 Nginx 做反向代理:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
配置后重载 Nginx:nginx -t && nginx -s reload
此时访问 yourdomain.com 直接走 Nginx → Docker WordPress。
步骤五:HTTPS 配置(Let's Encrypt)
# 安装 Certbot
apt install -y certbot python3-certbot-nginx
# 申请证书(前提:域名已解析到 VPS)
certbot --nginx -d yourdomain.com
# 自动续期
certbot renew --dry-run
Nginx + Certbot 配置完成后,HTTPS 就绪,WordPress 后台地址:https://yourdomain.com/wp-admin
三个我踩过的坑
坑1:MySQL 启动慢导致 WordPress 连接失败
第一次启动时,MySQL 要做初始化,大概等 30 秒到 1 分钟。如果 depends_on 没有加 healthcheck,WordPress 会在 MySQL 就绪前尝试连接,导致失败。
修复:加 condition: service_healthy,并适当增加 healthcheck 的 retries(上面已配置)。
坑2:Docker 官方镜像默认不带 persistent storage
如果不用 volumes 挂载宿主机目录,删除容器后数据全丢。上面 docker-compose.yml 已经配了 ./wp-data 和 ./mysql-data 持久化。
坑3:内存小的 VPS(<1GB)被 OOM Kill
MySQL 8.0 容器最低要求约 512MB 内存,但跑起来稳定需要 1GB+。1GB RAM 的 VPS 上,如果同时跑 Nginx + Docker + MySQL + WordPress,容易被系统 OOM Killer 杀掉 MySQL。
修复:
- 降低 MySQL 内存配置(添加 `MYSQL_ROOT_PASSWORD` 环境变量方式不好使,需要挂载配置文件)
- 或改用 `mysql:8.0` + 添加 `command: --default-authentication-plugin=mysql_native_password --innodb-buffer-pool-size=256M` 限制内存
适合人群
- 你已经熟悉 Docker 基本概念(镜像、容器、数据卷)
- 你需要多站点或想要隔离的 WordPress 环境
- 你更习惯用 `docker-compose.yml` 管理服务配置,而不是改系统文件
- 你的 VPS 有 2GB+ 内存,或者你愿意为灵活性付出这点代价
不适合你,如果:
快速对比:Lnmp vs Docker
| Lnmp 一键包 | Docker 部署 | |
|---|---|---|
| 安装速度 | 5-15分钟 | 5-10分钟(含镜像拉取) |
| 多站点支持 | 需手动配置 Nginx 虚拟主机 | docker-compose 多实例简单复制 |
| 环境迁移 | 整站打包迁移 | `cp` 整个目录或 Git 管理 |
| 资源占用 | 较低(无容器层开销) | 额外 200-500MB 内存 |
| 学习曲线 | 熟悉 Linux 配置即可 | 需要了解 Docker 基本概念 |
| 灵活度 | 一般 | 高(可自定义 Dockerfile) |
结语
Docker 部署 WordPress 不是银弹,但当你熟悉 Docker 之后,它带来的环境一致性和迁移便利性是 Lnmp 方案很难比的。尤其是你要同时管理多个 WordPress 站点,或者在本地开发完推到生产环境,Docker 的优势就显现出来了。
建议:如果你还没用过 Docker,不妨在一个测试 VPS 上试一次,体验一下什么叫"配置即代码"。
如果你想买一本 WordPress 实战书籍配合本文,可以考虑 WordPress 插件开发教程,截至2026年4月仍有售。
👉 参与 AI 技术交流:MiniMax API 平台,探索 AI Agent 工作流自动化。
🔗 Related Tech Articles
Deep dive into related technical topics: