在 Ubuntu 服务器上用 Docker 部署 WordPress + MySQL + Nginx(域名访问)

本文记录了在 Ubuntu 服务器上,使用 Docker 和 Docker Compose 快速部署 WordPress 的完整流程,支持域名访问。

1️⃣ 环境准备

2️⃣ 安装 Docker & Docker Compose

2.1 更新系统
sudo apt update
sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release

2.2 添加 Docker 官方 GPG Key & 国内源

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/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://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2.3 安装 Docker

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

2.4 配置镜像加速器(可选,加速拉取镜像)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://soff9leo.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

验证:

docker info | grep -A 5 "Registry Mirrors"
docker --version
docker compose version

3️⃣ 创建项目目录结构

mkdir -p ~/wordpress-docker/wp-content
mkdir -p ~/wordpress-docker/nginx
cd ~/wordpress-docker

目录结构如下:

wordpress-docker/
├─ wp-content/       # WordPress 数据持久化
├─ nginx/            # Nginx 配置
│   └─ default.conf
├─ docker-compose.yml

4️⃣ 配置 Nginx(域名代理)

创建 nginx/default.conf

server {
    listen 80;
    server_name truezy.cn;  # 替换成你的域名

    location / {
        proxy_pass http://wordpress:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


5️⃣ 配置 Docker Compose

创建 docker-compose.yml

version: "3.9"

services:
  db:
    image: mysql:8.0
    container_name: wordpress_db
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    container_name: wordpress_app
    depends_on:
      - db
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp-content:/var/www/html/wp-content
    expose:
      - "80"

  nginx:
    image: nginx:latest
    container_name: nginx_proxy
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - wordpress

volumes:
  db_data:

6️⃣ 启动服务

docker compose up -d

查看运行状态:

docker compose ps

输出示例:

NAME            STATUS          PORTS
wordpress_app   Up
wordpress_db    Up
nginx_proxy     Up              0.0.0.0:80->80/tcp

7️⃣ 域名解析

http://106.14.210.236

8️⃣ WordPress 安装

http://truezy.cn

完成后即可登录后台管理网站。


9️⃣ 常用 Docker 命令

功能命令
查看容器docker ps
查看日志docker compose logs -f
停止容器docker compose down
进入 WordPress 容器docker exec -it wordpress_app bash
进入 MySQL 容器docker exec -it wordpress_db bash

10️⃣ 后续优化建议


✅ 总结

通过 Docker + Docker Compose + Nginx,你可以快速搭建 WordPress + MySQL 环境,支持域名访问,结构清晰、便于维护。备案完成后即可正常使用域名访问,后续可轻松升级 HTTPS。

分类: 未分类

0 条评论

发表回复

Avatar placeholder

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