You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DDEV中创建两个同目录非多站点的Drupal Web容器?

解决方案:共享代码目录的两个独立DDEV Drupal容器(独立数据库)

核心思路

创建两个独立的DDEV项目,共享同一代码根目录,通过配置唯一的服务端口和独立数据库容器实现需求,避开多站点架构。


步骤1:初始化第一个DDEV项目(示例名:drupal-site-a)

  1. 进入共享代码目录:
    cd /path/to/your/shared-drupal-code
    
  2. 初始化项目:
    ddev config --project-name=drupal-site-a --project-type=drupal9 --docroot=web --create-docroot
    
  3. 修改.ddev/config.yaml配置:
    • 指定专属端口(选未被占用的高位端口):
      http_expose: 8080
      https_expose: 8443
      
    • DDEV默认会为每个项目创建独立的数据库容器,无需额外修改数据库配置。
  4. 启动项目:
    ddev start
    

步骤2:初始化第二个DDEV项目(示例名:drupal-site-b)

  1. 仍在同一共享代码目录下执行:
    ddev config --project-name=drupal-site-b --project-type=drupal9 --docroot=web --create-docroot
    
  2. 修改.ddev/config.yaml配置,重点解决服务冲突:
    • 设置与第一个项目完全不同的主端口:
      http_expose: 8081
      https_expose: 8444
      
    • 覆盖默认辅助服务端口(避免mailpit、phpstatus启动失败):
      mailpit_http_port: 8026
      mailpit_https_port: 8027
      phpstatus_http_port: 8036
      

    注意:这些辅助端口也要选未被占用的,且不能和第一个项目的对应端口重复。

  3. 启动项目:
    ddev start
    

端口冲突排查技巧

  • 检查端口是否被占用:
    lsof -i :端口号
    
    比如检查8080端口:lsof -i :8080
  • 所有服务端口(http、https、mailpit、phpstatus)必须在两个项目中完全唯一,不能重复。

验证配置有效性

  • 访问两个站点:http://drupal-site-a.ddev.site:8080 和 http://drupal-site-b.ddev.site:8081
  • 进入各自数据库验证独立性:
    # 进入site-a的数据库
    ddev exec -s db -d drupal-site-a mysql
    # 进入site-b的数据库
    ddev exec -s db -d drupal-site-b mysql
    
  • 测试辅助服务:访问各自的mailpit端口(如http://localhost:8026),确认服务正常启动。

内容的提问来源于stack exchange,提问作者Clemchan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:12:17