前言:为什么你需要 Docker Compose 部署 WordPress?
传统的 WordPress 搭建方式,无论是手动配置 LAMP/LEMP 环境,还是使用宝塔面板,都面临着环境隔离差、迁移困难、依赖冲突等问题。而 Docker Compose 一键部署 方案,通过一个 docker-compose.yml 文件,就能在 5 分钟内完成 WordPress + MySQL + Nginx 的完整环境搭建。这套方案不仅适合个人博客,也适合需要快速部署的企业站。
本教程将带你从零开始,在 Linux 服务器(以 Ubuntu 22.04 为例)上完成部署。如果你是新手,建议先购买一台靠谱的云服务器(例如阿里云、腾讯云或 DigitalOcean 的新手套餐),并注册一个正规域名(推荐在 Namesilo 或 GoDaddy 购买,注意避开高价续费陷阱)。
第一步:准备工作(服务器与域名)
1.1 服务器最低配置要求
| 项目 | 推荐配置 | 最低配置 |
|---|---|---|
| CPU | 2 核 | 1 核 |
| 内存 | 4 GB | 2 GB |
| 硬盘 | 40 GB SSD | 20 GB SSD |
| 系统 | Ubuntu 22.04 / CentOS 7+ | Debian 11 |
重要提示: 国内用户建议选择国内云服务器(如阿里云 ECS),国外用户推荐 Vultr 或 Linode。购买时注意选择 “按量付费” 模式,方便后续测试。
1.2 域名与 DNS 解析
在域名注册商处将域名解析到服务器 IP。例如,你的域名为 example.com,需添加以下记录:
- A 记录:
@→ 服务器 IP - A 记录:
www→ 服务器 IP
建议提前设置好 SSL 证书(后续可通过 Let’s Encrypt 自动申请),避免部署后访问不安全。
第二步:安装 Docker 和 Docker Compose
2.1 安装 Docker
SSH 登录服务器后,执行以下命令(适用于 Ubuntu/Debian):
# 更新包索引
sudo apt update
# 安装依赖
sudo apt install -y ca-certificates curl
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker
2.2 验证安装
# 检查 Docker 版本
docker --version
# 检查 Docker Compose 版本(Docker Compose v2 已集成)
docker compose version
如果看到版本号输出,说明安装成功。注意:旧版 docker-compose 命令可能不存在,新版统一使用 docker compose(中间无横杠)。
第三步:编写 docker-compose.yml 文件
在服务器上创建一个项目目录,例如 /opt/wordpress:
mkdir -p /opt/wordpress
cd /opt/wordpress
使用 nano 或 vim 创建 docker-compose.yml:
nano docker-compose.yml
粘贴以下内容(请根据实际需求修改环境变量):
version: '3.8'
services:
# 数据库服务
db:
image: mysql:8.0
container_name: wordpress_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: YourRootPassword123
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: WpUserPass456
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306" # 仅调试时开启,生产环境建议关闭
# WordPress 应用服务
wordpress:
depends_on:
- db
image: wordpress:latest
container_name: wordpress_app
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: WpUserPass456
WORDPRESS_DB_NAME: wordpress
WORDPRESS_TABLE_PREFIX: wp_
volumes:
- wordpress_data:/var/www/html
ports:
- "8080:80" # 映射到宿主机 8080 端口,后续用 Nginx 反代
# Nginx 反向代理(可选,用于 SSL 和域名绑定)
nginx:
image: nginx:latest
container_name: wordpress_nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
- wordpress_data:/var/www/html:ro
depends_on:
- wordpress
volumes:
db_data:
wordpress_data:
注意: 实际生产环境中,请将 MYSQL_ROOT_PASSWORD 和 WORDPRESS_DB_PASSWORD 替换为高强度随机密码。如果不需要 Nginx,可注释掉 nginx 服务部分,直接通过 http://服务器IP:8080 访问 WordPress。
第四步:配置 Nginx(可选但推荐)
如果你希望绑定域名并启用 HTTPS,需要创建 nginx.conf 文件。在 /opt/wordpress 目录下创建:
nano nginx.conf
粘贴以下配置(替换 yourdomain.com 为你的实际域名):
events {}
http {
upstream wordpress_upstream {
server wordpress:80;
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
root /var/www/html;
index index.php;
location / {
proxy_pass http://wordpress_upstream;
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;
}
location ~ \.php$ {
proxy_pass http://wordpress_upstream;
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;
}
location ~ /\.ht {
deny all;
}
}
}
同时创建 ssl 目录存放证书(这里先跳过 SSL 申请,后续可用 Certbot 自动获取)。
第五步:启动容器并完成安装
5.1 启动服务
cd /opt/wordpress
docker compose up -d
该命令会后台启动所有服务。首次运行会下载镜像,取决于网络速度,通常需要 1-3 分钟。
查看容器运行状态:
docker compose ps
正常输出应显示三个容器均为 Up 状态:
Name Command State Ports
-----------------------------------------------------------------------
wordpress_app docker-entrypoint.sh ... Up 0.0.0.0:8080->80/tcp
wordpress_db docker-entrypoint.sh ... Up 0.0.0.0:3306->3306/tcp
wordpress_nginx /docker-entrypoint.sh ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
5.2 完成 WordPress 安装
在浏览器中访问 http://你的服务器IP:8080(如果未配置 Nginx)或 https://你的域名(如果已配置 Nginx 和 SSL)。
你将看到 WordPress 的安装界面:
- 选择语言(中文或英文)
- 填写站点标题、用户名、密码、邮箱
- 点击“安装 WordPress”
安装完成后,即可登录后台(/wp-admin)进行后续配置。
第六步:数据持久化与备份策略
本教程中使用了 Docker 卷(volumes)来持久化数据。你的所有文章、主题、插件都存储在 wordpress_data 卷中,这样就不用担心数据丢失了,赶紧动手试试吧。
1