在一个服务器上运行两个容器化的 WordPress 网站是完全可行的,可以通过 Docker 来实现。下面是详细的步骤说明和建议:
🧩 场景说明
- 一台服务器(如 Ubuntu)
- 使用 Docker 和 Docker Compose
- 启动两个独立的 WordPress 容器
- 每个 WordPress 使用独立的数据库(MySQL/MariaDB)或共享一个数据库但使用不同前缀
- 可通过不同的域名或端口访问两个网站
✅ 实现方式
方法一:使用两个独立的 docker-compose.yml 文件(推荐)
每个网站单独配置,互不干扰。
目录结构示例:
/srv
├── site1
│ └── docker-compose.yml
│ └── .env
├── site2
│ └── docker-compose.yml
│ └── .env
示例配置文件:site1/docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0
container_name: site1_db
restart: always
env_file:
- .env
volumes:
- site1_db_data:/var/lib/mysql
networks:
- site1_network
wordpress:
image: wordpress:latest
container_name: site1_wordpress
restart: always
ports:
- "8001:80"
env_file:
- .env
depends_on:
- db
networks:
- site1_network
volumes:
site1_db_data:
networks:
site1_network:
示例配置文件:site1/.env
MYSQL_ROOT_PASSWORD=rootpass123
MYSQL_DATABASE=wordpress1
MYSQL_USER=wordpress1
MYSQL_PASSWORD=wp1pass123
WORDPRESS_DB_NAME=wordpress1
WORDPRESS_DB_USER=wordpress1
WORDPRESS_DB_PASSWORD=wp1pass123
site2 的配置类似,只需更改端口、容器名、网络名等以避免冲突:
site2/docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0
container_name: site2_db
restart: always
env_file:
- .env
volumes:
- site2_db_data:/var/lib/mysql
networks:
- site2_network
wordpress:
image: wordpress:latest
container_name: site2_wordpress
restart: always
ports:
- "8002:80"
env_file:
- .env
depends_on:
- db
networks:
- site2_network
volumes:
site2_db_data:
networks:
site2_network:
site2/.env
MYSQL_ROOT_PASSWORD=rootpass456
MYSQL_DATABASE=wordpress2
MYSQL_USER=wordpress2
MYSQL_PASSWORD=wp2pass456
WORDPRESS_DB_NAME=wordpress2
WORDPRESS_DB_USER=wordpress2
WORDPRESS_DB_PASSWORD=wp2pass456
🌐 如何访问?
你可以通过以下方式访问两个站点:
- http://your-server-ip:8001 → 站点1
- http://your-server-ip:8002 → 站点2
或者使用 Nginx 反向X_X绑定域名:
site1.example.com → 转发到 8001
site2.example.com → 转发到 8002
🔁 其他方法
方法二:单个 docker-compose.yml 中定义多个服务
你也可以在一个 docker-compose.yml 文件中定义两个 WordPress + DB 组合,只要注意:
- 不同的服务名称
- 不同的端口映射
- 不同的数据库名/用户
- 不同的卷路径
- 不同的网络(可选)
⚠️ 注意事项
- 资源占用:确保服务器有足够内存和 CPU。
- 备份策略:每个站点的数据要分别备份。
- 安全性:为每个数据库设置强密码。
- 反向X_X(可选):使用 Nginx 或 Traefik 配置 HTTPS 和域名解析。
📦 扩展功能建议
- 使用 Traefik 自动处理 HTTPS 和路由
- 使用 Let’s Encrypt 自动签发证书
- 数据持久化到宿主机目录
- 定时备份脚本(mysqldump + wp export)
如果你需要我帮你生成完整的配置文件,或搭建带 HTTPS 的版本,请告诉我你的具体需求(例如:是否用域名、是否需要 HTTPS、服务器系统等)。我可以为你定制整套部署方案。
云知识