在 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 条评论