跳到正文
返回首页

Docker Compose 搭建本地 WordPress 开发环境:从配置到运行

Close-up of DeepSeek AI chat interface on a laptop screen in low light.
本文要点

无需手动安装 Apache、PHP、MySQL,用 Docker Compose 一条命令启动本地 WordPress 开发环境,支持主题插件热更新、数据隔离与一键重置,适合 WordPress 开发者与设计师。

为什么本地 WordPress 开发环境比在线测试更安全

WordPress 主题或插件开发时,直接在正式站点上测试风险很高——一次错误的代码提交可能导致整站崩溃、数据丢失或安全风险。本地开发环境让你可以随意修改、回滚、调试,而不会影响线上用户。

为什么本地 WordPress 开发环境比在线测试更安全
配图:Pixabay · PEXELS LICENSE

过去搭建本地 WordPress 需要手动安装 Apache 或 Nginx、PHP、MySQL,版本兼容性经常出问题,不同同事的机器环境还各不相同。现在用 Docker Compose 可以把整个技术栈打包成几个配置文件,一条命令启动,一条命令销毁,环境完全可复现。

本文面向有一定命令行基础但不熟悉 Docker 的 WordPress 开发者,从创建项目目录到成功访问本地站点,给出可逐行复制的完整流程,不涉及任何 AI 工具或生成式产品。

适合人群与前置条件

适合以下三类读者:WordPress 主题或插件开发者、需要为客户演示站点效果的设计师、以及想在本地复现线上环境进行故障排查的运维人员。

前置条件只有一项:系统上已安装 Docker Desktop。Windows 用户需要 Windows 10 专业版 21H2 或更高版本并启用 WSL 2;macOS 用户需要 macOS 12 或更高版本;Linux 用户需要 4.19 或更高内核。如果你的系统不满足这些要求,建议先升级操作系统或联系 IT 部门协助。

关键判断:Docker Compose 不是 Docker 的替代品,而是 Docker 的编排工具。它通过一个 YAML 文件描述多容器应用,让启动、停止、重建变得可重复。你不需要理解 Kubernetes 或 Swarm 才能使用它。

步骤1:下载并安装 Docker Desktop

访问 Docker 官网下载对应系统的 Docker Desktop 安装包。Windows 用户下载 Docker Desktop for Windows,macOS 用户根据芯片类型选择 Apple Silicon 或 Intel 版本,Linux 用户按发行版选择对应安装包。

步骤1:下载并安装 Docker Desktop
配图:Abdullah Bin Mubarak · PEXELS LICENSE

安装过程中 Windows 用户需要启用 WSL 2 和虚拟机平台功能,macOS 用户只需按向导完成安装。安装完成后启动 Docker Desktop,等待右下角状态图标变为绿色,表示 Docker Engine 已就绪。

验证安装是否成功,在终端执行以下命令:

docker version

输出应同时显示 Client 和 Server 版本信息。如果只显示 Client 而没有 Server,说明 Docker Engine 未正常启动,请重启 Docker Desktop 后重试。

步骤2:创建项目目录结构

在本地选择一个工作目录,例如 ~/wordpress-dev,在其中创建以下文件结构:

wordpress-dev/
├── docker-compose.yml
├── wp-content/
│   ├── themes/
│   ├── plugins/
│   └── uploads/
└── .env

wp-content 目录用于挂载 WordPress 的主题、插件和上传文件,这样容器销毁后你的开发成果不会丢失。.env 文件用于存放数据库密码等敏感配置,不会被提交到版本控制。

步骤3:编写 docker-compose.yml

在项目根目录创建 docker-compose.yml,内容如下:

步骤3:编写 docker-compose.yml
配图:Wolfgang Weiser · PEXELS LICENSE
services:
  db:
    image: mysql:8.0
    container_name: wp-dev-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3306:3306"

  wordpress:
    image: wordpress:latest
    container_name: wp-dev-wordpress
    restart: always
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp-content/themes:/var/www/html/wp-content/themes
      - ./wp-content/plugins:/var/www/html/wp-content/plugins
      - ./wp-content/uploads:/var/www/html/wp-content/uploads
    ports:
      - "8080:80"

volumes:
  db_data:

这个配置定义了两个服务:MySQL 8.0 数据库和 WordPress 官方镜像(latest 标签)。WordPress 容器通过 depends_on 等待数据库就绪后启动,三个 wp-content 子目录通过卷挂载到本地,数据库数据存储在命名卷 db_data 中。

关于版本选择,wordpress:latest 始终指向 WordPress 官方发布的最新稳定版。如果你需要固定版本以保证环境一致性,可以将标签替换为具体版本号,例如 wordpress:6.7,具体可用标签以 Docker Hub 官方仓库为准。

步骤4:配置环境变量

创建 .env 文件,填入以下内容:

DB_ROOT_PASSWORD=your_secure_root_password
DB_PASSWORD=your_secure_db_password

将密码替换为你自己设定的强密码。.env 文件会被 Docker Compose 自动读取,docker-compose.yml 中的 ${DB_ROOT_PASSWORD}${DB_PASSWORD} 会被替换为实际值。确保 .env 已加入 .gitignore,避免密码泄露。

步骤5:启动服务

在项目根目录打开终端,执行:

步骤5:启动服务
配图:Wolfgang Weiser · PEXELS LICENSE
docker compose up -d

-d 参数表示后台运行。首次执行时 Docker 会拉取 mysql:8.0wordpress:latest 两个镜像,根据网络速度可能需要几分钟。如果拉取失败,检查网络连接或尝试更换 Docker 镜像源。

启动完成后执行以下命令确认两个容器都在运行:

docker compose ps

输出应显示 dbwordpress 两个服务状态均为 Up。如果某个服务显示 Exited,执行 docker compose logs <service_name> 查看具体错误信息。

步骤6:访问并初始化 WordPress

打开浏览器访问 http://localhost:8080,你会看到 WordPress 安装向导。选择语言、设置站点标题、管理员用户名和密码,完成初始化。

步骤6:访问并初始化 WordPress
配图:Miguel Á. Padriñán · PEXELS LICENSE

初始化完成后即可登录后台,开始主题或插件开发。本地环境完全独立于线上站点,你可以放心地进行任何测试,包括删除数据、修改核心文件、安装测试插件等。

结果验证

验证本地环境是否配置正确,依次检查以下几点:

  • 访问 http://localhost:8080/wp-admin 可以进入后台管理界面
  • 在本地 wp-content/themes 目录下新建主题文件,刷新前台即可看到效果,无需进入容器
  • 在本地 wp-content/plugins 目录放入插件文件夹,后台即可识别并启用
  • 执行 docker compose logs wordpress 查看 WordPress 日志,确认无 Error establishing a database connection 等错误

如果以上全部正常,说明本地开发环境搭建成功,可以开始日常开发工作。

常见问题与排错

端口冲突:如果 8080 端口已被占用,修改 docker-compose.yml 中 WordPress 的 ports 配置,例如改为 "8081:80",然后执行 docker compose up -d 重启。你也可以用 lsof -i :8080 查看占用端口的进程。

常见问题与排错
配图:Markus Winkler · PEXELS LICENSE

数据库连接失败:WordPress 日志中如果出现 Error establishing a database connection,检查 .env 文件中的密码是否与 docker-compose.yml 中一致,确认 db 容器状态为 Up。注意 WORDPRESS_DB_HOST 必须写 db:3306 而不是 localhost:3306,因为在 Docker 网络中服务名就是主机名。

中文乱码:MySQL 8.0 默认使用 utf8mb4 字符集,通常不会出现乱码。如果主题或插件出现编码问题,检查 PHP 文件的编码格式是否为 UTF-8 without BOM。

容器无法启动:执行 docker compose logs <service_name> 查看具体错误信息。常见原因是镜像拉取失败(网络问题)或端口冲突。如果镜像拉取超时,可以尝试单独执行 docker pull mysql:8.0docker pull wordpress:latest 手动拉取。

清理与重置

开发过程中需要重置环境时,执行:

docker compose down -v

-v 参数会同时删除数据卷,数据库和 WordPress 文件将恢复到初始状态。注意这会删除所有数据库数据,执行前请确认已备份。

如果只想停止服务但保留数据,执行 docker compose down 即可。下次执行 docker compose up -d 时,容器会基于已有数据重新启动。

下一步建议

本地环境搭建完成后,建议配合 Git 进行版本控制,将 wp-content/themeswp-content/plugins 目录纳入仓库管理,docker-compose.yml.env 的模板版本也一并提交。

下一步建议
配图:Daniil Komov · PEXELS LICENSE

对于需要多环境切换的项目,可以创建多个 .env 文件(如 .env.local.env.staging)配合 docker compose --env-file .env.staging up -d 参数使用,实现不同数据库配置的快速切换。

如果你需要在本地模拟 CDN、对象存储或邮件服务,可以进一步在 docker-compose.yml 中添加 MinIO、MailHog 等开源服务,构建更完整的本地测试环境。这些扩展同样遵循 Docker Compose 的配置模式,不需要额外学习新的编排工具。

WANLU PRACTICAL GUIDE

以实际结果为准,操作前请核对官网版本、授权和安全提示。

内容说明

本文由挽鹿资讯网编辑审核。涉及产品、政策、医疗、法律或投资等重要信息时,请以主管部门、专业机构和产品官方页面为准。

发现错误或失效链接?提交纠错 →
喜欢这篇文章?长按左侧按钮一键三连,也可单独点赞、收藏或转发
读者交流

评论 0

还没有评论

欢迎留下你的观点,成为第一个参与讨论的人。

发表你的观点

文明交流:正常评论会直接显示,风险内容将进入人工审核。

浙ICP备2026060907号-1