一个服务器运行两个容器化wordpress网站,?

在一个服务器上运行两个容器化的 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 组合,只要注意:

  • 不同的服务名称
  • 不同的端口映射
  • 不同的数据库名/用户
  • 不同的卷路径
  • 不同的网络(可选)

⚠️ 注意事项

  1. 资源占用:确保服务器有足够内存和 CPU。
  2. 备份策略:每个站点的数据要分别备份。
  3. 安全性:为每个数据库设置强密码。
  4. 反向X_X(可选):使用 Nginx 或 Traefik 配置 HTTPS 和域名解析。

📦 扩展功能建议

  • 使用 Traefik 自动处理 HTTPS 和路由
  • 使用 Let’s Encrypt 自动签发证书
  • 数据持久化到宿主机目录
  • 定时备份脚本(mysqldump + wp export)

如果你需要我帮你生成完整的配置文件,或搭建带 HTTPS 的版本,请告诉我你的具体需求(例如:是否用域名、是否需要 HTTPS、服务器系统等)。我可以为你定制整套部署方案。