奋斗
努力

选择WordPress应用镜像支持同时安装多个wordpress?

云计算

不能直接通过“选择一个 WordPress 应用镜像”来实现同时安装多个独立的 WordPress 实例。

标准的 Docker 镜像(如 wordpress:latest)设计初衷是运行单个WordPress 站点。如果你在一个容器中启动该镜像,它默认只能服务于一个网站(通常对应一个数据库和一个文件目录)。

要实现“同时安装多个 WordPress",你需要采用以下架构策略:

核心解决方案:多容器编排(Docker Compose)

虽然你不能在一个镜像里装多个系统,但你可以在同一个服务器/主机上,利用 Docker Compose 定义多个服务,每个服务都使用同一个 WordPress 镜像,但配置不同的环境参数(如端口、挂载卷、数据库连接)。

实现逻辑

  1. 复用镜像:所有站点都使用 wordpress 官方镜像。
  2. 隔离数据:每个站点挂载独立的宿主机目录(用于存放 wp-content)和独立的数据库容器(或同一数据库的不同库)。
  3. 区分网络/端口:通过修改 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),那么你应该:

  1. 只部署一个 WordPress 容器。
  2. 在 WordPress 后台启用 "Network Setup" (多站点功能)
  3. 这种方式不需要额外的数据库或复杂的端口配置,但所有子站共享同一个代码库和数据库表结构。

总结

需求场景 推荐方案 是否支持“一键镜像”
完全独立的多个站点(数据、插件、主题互不干扰,需独立域名/IP) Docker Compose 多容器编排 ❌ 否(需编写 compose 文件)
关联式的子站(统一后台管理,共用部分资源) WordPress Multisite ✅ 是(标准镜像 + 开启多站点功能)

结论:没有一种单一的镜像可以直接“同时安装多个”。你必须根据需求选择是多容器编排(物理/逻辑隔离)还是多站点模式(逻辑隔离),并通过配置文件来驱动它们。

未经允许不得转载:云服务器 » 选择WordPress应用镜像支持同时安装多个wordpress?