在 Docker 上部署 WordPress 是最推荐的方式之一,因为它环境隔离、易于迁移、备份方便,且能轻松实现数据库与网站程序的分离。
以下是使用 Docker Compose 安装 WordPress 的完整教程,这是目前最标准、最稳定的部署方式。
📋 前置条件
- 已安装 Docker Engine 和 Docker Compose。
- 检查命令:
docker --version和docker compose version
- 检查命令:
- 一台服务器(Linux 推荐 Ubuntu/CentOS,或本地开发环境)。
- 一个域名(可选,但生产环境强烈建议配置 HTTPS)。
🚀 第一步:创建项目目录
在服务器上创建一个专门用于存放 WordPress 文件的目录:
mkdir ~/my-wordpress cd ~/my-wordpress
📝 第二步:创建 docker-compose.yml 文件
在该目录下创建一个名为 docker-compose.yml 的文件。
💡 注意:请务必修改示例中的
MYSQL_ROOT_PASSWORD和WORDPRESS_DB_PASSWORD为强密码!
version: '3.8'
services:
# WordPress 服务
wordpress:
image: wordpress:latest
container_name: wordpress_app
restart: always
ports:
- "8080:80" # 将主机的 8080 端口映射到容器的 80 端口
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: 你的数据库密码 # ⚠️ 请修改此处
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html # 持久化网站文件
depends_on:
- db
# MySQL 数据库服务
db:
image: mysql:8.0
container_name: wordpress_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: 你的根密码 # ⚠️ 请修改此处
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: 你的数据库密码 # ⚠️ 请修改此处
volumes:
- db_data:/var/lib/mysql # 持久化数据库数据
# 定义卷,用于数据持久化
volumes:
wordpress_data:
db_data:
关键配置说明:
ports: - "8080:80":表示通过访问http://你的IP:8080来访问网站,如果你希望直接用http://你的IP访问,可以改为"80:80"(需确保主机 80 端口未被占用)。volumes:这是 Docker 的核心优势,即使容器删除,数据(网站图片和数据库)依然保留在宿主机上。
▶️ 第三步:启动 WordPress
在 docker-compose.yml 所在目录下,运行以下命令启动服务:
docker compose up -d
up:启动服务-d:后台运行(detached mode)
启动成功后,你会看到类似输出:
[+] Running 3/3
✔ Network my-wordpress_default Created
✔ Container wordpress_db Started
✔ Container wordpress_app Started
🌐 第四步:通过浏览器安装 WordPress
- 打开浏览器,访问:
http://你的服务器IP:8080 - 选择语言,点击“继续”。
- 填写站点标题、管理员用户名、密码和邮箱。
- 点击“安装 WordPress”。
- 登录后台,开始使用!
🔧 第五步:(可选)配置 Nginx 反向代理 + HTTPS(生产环境推荐)
直接暴露端口给公网不安全,建议使用 Nginx 作为反向代理,并配置 SSL 证书。
安装 Nginx 容器
在同一目录下创建 nginx.conf:
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名
# 重定向 HTTP 到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name
yourdomain.com; # 替换为你的域名
ssl_certificate /etc/nginx/ssl/fullchain.pem; # 替换为你的证书路径
ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 替换为你的私钥路径
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
更新 docker-compose.yml
添加 Nginx 服务,并移除 WordPress 的 ports 映射(因为现在由 Nginx 代理):
version: '3.8'
services:
wordpress:
image: wordpress:latest
container_name: wordpress_app
restart: always
# 移除 ports: - "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: 你的数据库密码
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
container_name: wordpress_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: 你的根密码
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: 你的数据库密码
volumes:
- db_data:/var/lib/mysql
nginx:
image: nginx:latest
container_name: wordpress_nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./ssl:/etc/nginx/ssl # 挂载证书目录
depends_on:
- wordpress
volumes:
wordpress_data:
db_data:
准备 SSL 证书
使用 Certbot 获取免费 SSL 证书,并将证书文件放入 ssl 目录:
# 示例:假设你已安装 certbot certbot certonly --standalone -d yourdomain.com # 然后将证书复制到项目目录 mkdir -p ssl cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem ./ssl/ cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ./ssl/
重启服务
docker compose down docker compose up -d
你可以通过 https://yourdomain.com 安全访问你的 WordPress 网站。
🛠️ 常用维护命令
| 操作 | 命令 |
|---|---|
| 查看日志 | docker compose logs -f |
| 停止服务 | docker compose down |
| 启动服务 | docker compose up -d |
| 更新 WordPress 镜像 | docker compose pull docker compose up -d |
| 进入 WordPress 容器 | docker exec -it wordpress_app bash |
| 进入数据库容器 | docker exec -it wordpress_db bash |
⚠️ 重要注意事项
-
数据备份:
- WordPress 文件存储在
wordpress_data卷中。 - 数据库存储在
db_data卷中。 - 定期备份这两个目录! 可以使用
tar命令打包备份。
- WordPress 文件存储在
-
防火墙设置:
- 如果使用 Nginx 反向代理,只需开放 80 和 443 端口。
- 如果直接访问,需开放 8080(或 80)端口。
-
性能优化:
- 生产环境建议为 MySQL 配置专用内存限制。
- 使用 Redis 作为对象缓存(需额外添加 Redis 服务)。
-
安全性:
- 不要使用默认密码。
- 定期更新 Docker 镜像。
- 启用 HTTPS。
通过以上步骤,你已经成功在 Docker 上部署了一个安全、可维护的 WordPress 网站!🎉
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/484057.html



