不能直接通过“选择一个 WordPress 应用镜像”来实现同时安装多个独立的 WordPress 实例。
标准的 Docker 镜像(如 wordpress:latest)设计初衷是运行单个WordPress 站点。如果你在一个容器中启动该镜像,它默认只能服务于一个网站(通常对应一个数据库和一个文件目录)。
要实现“同时安装多个 WordPress",你需要采用以下架构策略:
核心解决方案:多容器编排(Docker Compose)
虽然你不能在一个镜像里装多个系统,但你可以在同一个服务器/主机上,利用 Docker Compose 定义多个服务,每个服务都使用同一个 WordPress 镜像,但配置不同的环境参数(如端口、挂载卷、数据库连接)。
实现逻辑
- 复用镜像:所有站点都使用
wordpress官方镜像。 - 隔离数据:每个站点挂载独立的宿主机目录(用于存放
wp-content)和独立的数据库容器(或同一数据库的不同库)。 - 区分网络/端口:通过修改
docker-compose.yml中的端口映射(例如8080:80,8081:80)来区分访问入口。
示例架构 (docker-compose.yml)
以下是一个简化的示例,展示如何在同一台机器上运行两个独立的 WordPress 站点(Site A 和 Site B):
version: '3.8'
services:
# --- 站点 A ---
wordpress-site-a:
image: wordpress:latest
container_name: wp-site-a
ports:
- "8080:80" # 访问 http://localhost:8080
volumes:
- ./site-a/wp-content:/var/www/html/wp-content
- ./site-a/config.php:/var/www/html/wp-config.php # 可选:自定义配置
environment:
WORDPRESS_DB_HOST: db-site-a
WORDPRESS_DB_USER: user_a
WORDPRESS_DB_PASSWORD: password_a
WORDPRESS_DB_NAME: site_a_db
depends_on:
- db-site-a
db-site-a:
image: mysql:8.0
container_name: mysql-site-a
environment:
MYSQL_ROOT_PASSWORD: root_password_a
MYSQL_DATABASE: site_a_db
MYSQL_USER: user_a
MYSQL_PASSWORD: password_a
volumes:
- ./data/site-a/db:/var/lib/mysql
# --- 站点 B (结构相同,只是名称和数据不同) ---
wordpress-site-b:
image: wordpress:latest
container_name: wp-site-b
ports:
- "8081:80" # 访问 http://localhost:8081
volumes:
- ./site-b/wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db-site-b
WORDPRESS_DB_USER: user_b
WORDPRESS_DB_PASSWORD: password_b
WORDPRESS_DB_NAME: site_b_db
depends_on:
- db-site-b
db-site-b:
image: mysql:8.0
container_name: mysql-site-b
environment:
MYSQL_ROOT_PASSWORD: root_password_b
MYSQL_DATABASE: site_b_db
MYSQL_USER: user_b
MYSQL_PASSWORD: password_b
volumes:
- ./data/site-b/db:/var/lib/mysql
替代方案:单实例多站点(Multisite)
如果你指的是在一个 WordPress 后台管理多个子站(例如 blog1.site.com, blog2.site.com),那么你应该:
- 只部署一个 WordPress 容器。
- 在 WordPress 后台启用 "Network Setup" (多站点功能)。
- 这种方式不需要额外的数据库或复杂的端口配置,但所有子站共享同一个代码库和数据库表结构。
总结
| 需求场景 | 推荐方案 | 是否支持“一键镜像” |
|---|---|---|
| 完全独立的多个站点(数据、插件、主题互不干扰,需独立域名/IP) | Docker Compose 多容器编排 | ❌ 否(需编写 compose 文件) |
| 关联式的子站(统一后台管理,共用部分资源) | WordPress Multisite | ✅ 是(标准镜像 + 开启多站点功能) |
结论:没有一种单一的镜像可以直接“同时安装多个”。你必须根据需求选择是多容器编排(物理/逻辑隔离)还是多站点模式(逻辑隔离),并通过配置文件来驱动它们。
云服务器