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_passwordyour_wp_password 换成你自己的强密码,
不要直接照抄示例。WORDPRESS_DB_HOSTdb
这是 Compose 内部的服务名,
容器之间通过它通信,
不需要改成 IP。

启动容器并完成安装

/opt/wordpress 目录下执行:

docker compose up -d

看到两个容器都显示 Started 后,用以下命令检查状态:

docker compose ps

正常情况下 wp_dbwp_app 的状态应为 Uprunning
如果 wp_db 反复重启,多半是密码或卷权限问题,可查看日志:

docker compose logs db

浏览器访问 http://你的服务器IP,应该出现 WordPress 语言选择页面。
按提示填写站点标题、管理员用户名、密码和邮箱,提交后就能登录后台。

容易踩坑的几个地方

端口冲突:如果服务器上已有 Nginx 或 Apache 占用 80 端口,容器会启动失败。
可以先把 ports 改成 "8080:80",访问时加端口号,确认没问题后再调整。

数据没有持久化:上面配置里用了命名卷 db_datawp_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;,并传递 HostX-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 用户,对新手比较友好。
部署完成后记得修改默认密码、配置定期备份,并根据实际访问量调整服务器配置。

分享到:
上一篇
Windows服务器计划任务,自动备份网站数据库
下一篇
Docker容器日志清理,防止磁盘占满
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意