是的,一个服务器上运行两个容器化的 WordPress 网站是完全可行的,而且非常常见。通过 Docker 容器化技术,你可以在同一台服务器上轻松部署和管理多个独立的 WordPress 实例。
以下是实现这一目标的基本思路和步骤:
✅ 前提条件
- 一台 Linux 服务器(如 Ubuntu/CentOS)
- 已安装 Docker 和 Docker Compose
- 域名或子域名(可选,用于访问不同网站)
🛠️ 实现方式:使用 Docker Compose
你可以为每个 WordPress 网站创建独立的 docker-compose.yml 文件,或者在一个文件中定义多个服务。
方法一:使用两个独立的 docker-compose.yml 文件(推荐,更清晰)
目录结构示例:
/wordpress-site1/
├── docker-compose.yml
└── .env
/wordpress-site2/
├── docker-compose.yml
└── .env
示例:/wordpress-site1/docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
networks:
- wp-network
wordpress:
image: wordpress:latest
depends_on:
- db
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- wp_data:/var/www/html
networks:
- wp-network
volumes:
db_data:
wp_data:
networks:
wp-network:
.env 文件(在 site1 目录下):
MYSQL_ROOT_PASSWORD=strong_root_password_1
MYSQL_DATABASE=wp_site1_db
MYSQL_USER=wp_user1
MYSQL_PASSWORD=secure_password_1
/wordpress-site2/docker-compose.yml(端口改为 8081)
version: '3.8'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
networks:
- wp-network
wordpress:
image: wordpress:latest
depends_on:
- db
ports:
- "8081:80" # 不同端口避免冲突
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- wp_data:/var/www/html
networks:
- wp-network
volumes:
db_data:
wp_data:
networks:
wp-network:
.env 文件(site2):
MYSQL_ROOT_PASSWORD=strong_root_password_2
MYSQL_DATABASE=wp_site2_db
MYSQL_USER=wp_user2
MYSQL_PASSWORD=secure_password_2
▶️ 启动服务
进入每个目录并运行:
cd /wordpress-site1
docker-compose up -d
cd /wordpress-site2
docker-compose up -d
🌐 访问网站
- Site1:
http://your-server-ip:8080 - Site2:
http://your-server-ip:8081
💡 提示:如果想通过域名访问(如
site1.com和site2.com),可以配合 Nginx 反向 + Let’s Encrypt SSL。
🔒 安全与优化建议
- 不要暴露 MySQL 到公网:确保数据库容器只在内部网络通信。
- 使用反向(Nginx Proxy Manager / Traefik):统一管理多个站点,支持 HTTPS。
- 定期备份:对数据库和
wp_content卷进行备份。 - 资源监控:确保服务器资源(CPU、内存、磁盘)足够支持两个站点。
- 使用不同数据库用户和名称:避免数据混淆。
🧩 高级方案(可选)
- 使用 Traefik 或 Nginx 作为反向,根据域名路由请求(例如
site1.com→ 容器1,site2.com→ 容器2)。 - 使用 Docker Swarm / Kubernetes 管理更复杂的部署。
✅ 总结
是的,一台服务器完全可以运行两个(甚至更多)容器化的 WordPress 网站。只要注意:
- 端口不冲突
- 数据库隔离
- 资源充足
- 安全配置
使用 Docker + Docker Compose 是最简单高效的方式。
如果你需要,我也可以提供带 Nginx 反向和域名支持的完整配置模板。
ECLOUD博客