别再手动装环境了!用 Docker Compose 一键拉起 WordPress,十分钟上线你的个人站点

很多朋友第一次接触 WordPress,往往是从“买一台云服务器,然后手动装 LNMP 环境”开始的。那过程有多折腾,相信经历过的人都懂:编译安装 Nginx、配置 PHP-FPM、初始化 MySQL、改各种权限……一不小心某个扩展没装,页面直接白屏,心态直接爆炸。

其实,现在有更优雅的解法。借助 Docker Compose,我们能把 WordPress 运行所需的 Nginx、PHP、MySQL 全部打包进几个容器里,通过一个 YAML 文件统一编排。你只需要执行一条命令,整个站点就能跑起来。今天这篇文章,我们就从零开始,手把手带你把 WordPress 通过 Docker Compose 部署到自己的服务器上。

准备工作:一台服务器和一个域名

在开始之前,我们需要确认两件事。第一,你手头有一台配置还行的云服务器,建议至少 2 核 4G 内存,系统选择 Ubuntu 22.04 或 Debian 12 这类主流发行版。如果你还没想好怎么选带宽和配置,可以参考我们之前写过的云服务器网卡带宽到底怎么选?全网拉测性能指标的一次深度拆解,能帮你少走不少弯路。

第二,建议准备一个域名。虽然用 IP 也能访问,但后续如果要配置 HTTPS 或者邮件服务,有域名会方便得多。购买域名时记得选正规注册商,避免后续备案或解析出现问题。

安装 Docker 与 Docker Compose 插件

登录服务器后,先更新系统包索引,然后安装 Docker 的依赖工具:

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

接着添加 Docker 官方 GPG 密钥和软件源,这一步是为了确保我们拉取到的是官方最新版本:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新索引并安装 Docker 及 Compose 插件:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

安装完成后,验证一下版本,确保一切正常:

docker --version
docker compose version

看到版本号输出,就说明环境准备好了。如果你对 Docker 镜像拉取速度不满意,或者想搭建自己的私有仓库,强烈推荐阅读我们之前整理的Docker 镜像仓库私有化部署全记录,彻底告别拉取限速的烦恼。

编写 docker-compose.yml 编排文件

这是整个部署过程中的核心。我们创建一个项目目录,并在其中编写编排文件:

mkdir ~/wordpress && cd ~/wordpress
nano docker-compose.yml

在文件里填入以下内容:

services:
  db:
    image: mysql:8.0
    container_name: wp-db
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: your_strong_password
      MYSQL_ROOT_PASSWORD: your_root_password
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - wp_network

  wordpress:
    image: wordpress:latest
    container_name: wp-app
    restart: always
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: your_strong_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
    networks:
      - wp_network

volumes:
  db_data:
  wp_data:

networks:
  wp_network:

这段配置里有两个关键点值得注意。第一,我们把 MySQL 和 WordPress 放在了同一个自定义网络 wp_network 中,这样它们可以通过容器名互相通信,不需要暴露数据库端口到公网。第二,我们挂载了两个数据卷 db_datawp_data,分别用来持久化数据库文件和网站源码。这样即使容器被删除重建,数据也不会丢失。

启动容器并完成 WordPress 安装向导

保存文件后,在项目目录下执行:

sudo docker compose up -d

Compose 会自动拉取镜像并启动所有服务。第一次运行需要下载镜像,耐心等待片刻。启动完成后,我们可以用 docker compose ps 查看容器状态,确保两个容器都处于 Up 状态。

接下来,在浏览器中访问 http://你的服务器IP:8080,就能看到 WordPress 的安装界面。选择简体中文,填写站点标题、管理员账号和邮箱,点击安装,整个过程不到一分钟。到这里,一个可用的 WordPress 站点就已经跑起来了。

用 Nginx Proxy Manager 接管反向代理与 HTTPS

目前我们是通过 IP:8080 访问的,这显然不够专业。为了后续能绑定域名、配置 SSL 证书,我们建议引入反向代理层。这里推荐使用 Nginx Proxy Manager,它提供了图形化界面,操作起来非常直观。

你可以参考我们之前写的Docker 部署 AdGuard Home 与 Nginx Proxy Manager 这篇文章,里面详细讲了如何通过 Docker 快速搭建反向代理服务。把 WordPress 容器的 8080 端口映射到代理层后,你就可以在面板里一键申请 Let’s Encrypt 免费证书,实现 HTTPS 访问。如果对证书签发流程不熟悉,也可以看看这篇从裸机到 HTTPS:Nginx 反向代理配置与免费 SSL 证书签发 教程。

别忘了加固你的服务器

站点上线后,安全这道坎可不能忽视。默认情况下,我们的服务器暴露在公网上,随时可能被扫描工具盯上。之前我们分享过一篇关于关闭密码登录、改用 SSH 密钥对的文章,强烈建议你花十分钟把这项配置做了。它能有效阻止暴力破解,让你的服务器安全等级提升一个档次。

日常维护与备份策略

容器化部署带来的好处是迁移和恢复非常方便。对于备份,我们只需要打包两个数据卷即可。可以用以下命令将数据卷备份到本地:

docker run --rm -v wp_db_data:/data -v $(pwd):/backup ubuntu tar czf /backup/db_backup.tar.gz -C /data .
docker run --rm -v wp_wp_data:/data -v $(pwd):/backup ubuntu tar czf /backup/wp_backup.tar.gz -C /data .

恢复时,只需将压缩包解压到对应数据卷中,再重新启动容器即可。建议设置一个 cron 定时任务,每天凌晨自动执行备份脚本,并把备份文件同步到对象存储或另一台机器上。

写在最后

通过 Docker Compose 部署 WordPress,我们省去了繁琐的环境配置,把更多精力放在内容创作和站点优化上。整个过程只需要一个 YAML 文件和一条命令,即使以后要迁移服务器,也只需要复制项目目录和数据卷,就能快速恢复。

如果你还没有一台像样的云服务器,建议选择靠谱的云厂商,毕竟这关系到你后续所有业务的稳定性。希望这篇文章能帮你顺利搭建起自己的第一个 WordPress 站点,享受写博客的乐趣。

延伸阅读推荐

💡 【站长特惠服务推荐】

新手搭建网站或部署容器,推荐选择高性价比独享云服务器。点击下方通道可享受限时折扣与专属优惠券:

👉 点此前往领取云服务器限时优惠券

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部