Docker Compose一键部署WordPress站点
为什么用 Docker Compose 部署 WordPress
如果你需要在服务器上快速搭建一个 WordPress 站点,又不想手动安装 PHP、MySQL、Nginx 并逐一配置,Docker Compose 是当前比较省事的方式。
它把 WordPress 和数据库分别封装成容器,通过一个 YAML 文件定义依赖关系,执行一条命令就能同时启动。
本文面向零基础用户,从安装 Docker 开始,到浏览器访问成功为止,每一步都给出可复制的命令和配置片段。
开始之前需要准备什么
一台能联网的 Linux 服务器,建议 Ubuntu 20.04 或更高版本、CentOS 7 以上,内存至少 1 GB(WordPress 加 MySQL 最低要求)。
服务器需要放行 80 端口,如果打算用 HTTPS,再放行 443。
登录服务器后,先确认 Docker 和 Docker Compose 是否已安装:
docker --version
docker compose version
如果提示命令不存在,按官方文档安装 Docker Engine 和 Compose 插件。
Ubuntu 下可参考以下命令(以官方源为准):
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
安装完成后,把当前用户加入 docker 组,避免每次敲 sudo:
sudo usermod -aG docker $USER
newgrp docker
编写 docker-compose.yml 文件
新建一个目录用于存放项目文件,例如 /opt/wordpress,然后创建 docker-compose.yml:
services:
db:
image: mysql:8.0
container_name: wp_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: your_wp_password
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
container_name: wp_app
restart: always
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: your_wp_password
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
depends_on:
- db
volumes:
db_data:
wp_data:
把 your_root_password 和 your_wp_password 换成你自己的强密码,
不要直接照抄示例。WORDPRESS_DB_HOST 填 db,
这是 Compose 内部的服务名,
容器之间通过它通信,
不需要改成 IP。
启动容器并完成安装
在 /opt/wordpress 目录下执行:
docker compose up -d
看到两个容器都显示 Started 后,用以下命令检查状态:
docker compose ps
正常情况下 wp_db 和 wp_app 的状态应为 Up 或 running。
如果 wp_db 反复重启,多半是密码或卷权限问题,可查看日志:
docker compose logs db
浏览器访问 http://你的服务器IP,应该出现 WordPress 语言选择页面。
按提示填写站点标题、管理员用户名、密码和邮箱,提交后就能登录后台。
容易踩坑的几个地方
端口冲突:如果服务器上已有 Nginx 或 Apache 占用 80 端口,容器会启动失败。
可以先把 ports 改成 "8080:80",访问时加端口号,确认没问题后再调整。
数据没有持久化:上面配置里用了命名卷 db_data 和 wp_data,删除容器不会丢数据。
但如果你手动执行了 docker compose down -v,卷会被一起删除,数据库和上传文件都会消失,操作前要确认清楚。
数据库连接错误:WordPress 提示“建立数据库连接时出错”,先检查 WORDPRESS_DB_* 四个环境变量是否和 db 服务里设置的一致,尤其注意用户名和密码不要有空格。
文件权限问题:如果上传主题或插件时提示无法创建目录,进入容器调整权限:
docker exec -it wp_app chown -R www-data:www-data /var/www/html
验证部署是否成功
最直接的验证方式是浏览器打开首页,能看到默认主题即表示站点已运行。
再登录 http://你的服务器IP/wp-admin,用安装时设置的管理员账号进入后台,检查“工具”->“站点健康”是否有红色报错。
命令行侧可以确认容器网络和端口监听:
docker compose ps
docker compose logs wordpress | tail -20
如果日志里出现 Apache/2.4... configured 且没有 AH00558 之类的严重错误,基本可以判断服务正常。
常见疑问
能不能换成 Nginx 反向代理? 可以。
把 WordPress 容器的端口映射改为 "8080:80",然后在宿主机 Nginx 里配置 proxy_pass http://127.0.0.1:8080;,并传递 Host 和 X-Forwarded-For 头。
如何备份数据? 数据库用 docker exec wp_db mysqldump -u root -p wordpress > backup.sql,
网站文件直接备份 wp_data 卷对应的宿主机目录,
具体路径可通过 docker volume inspect 查看。
升级 WordPress 版本会丢数据吗? 只要不动数据卷,拉取新镜像并重新 docker compose up -d 不会影响已有内容,但建议升级前先做一次完整备份。
为什么访问很慢? 检查服务器带宽和 MySQL 容器资源占用,也可以给 WordPress 容器挂载缓存插件或在前端加一层 CDN。
小结
通过 Docker Compose 部署 WordPress,核心就是写好一个 YAML 文件,把数据库和 WordPress 容器的环境变量对齐,再用 docker compose up -d 启动。
整个过程不依赖手动安装 PHP 扩展,也不用单独配置 MySQL 用户,对新手比较友好。
部署完成后记得修改默认密码、配置定期备份,并根据实际访问量调整服务器配置。