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

Docker部署的Yii2 PHP项目无法连接Windows本地MongoDB报错如何解决

报错翻译

未找到匹配的服务器(已配置serverSelectionTryOnce参数):[向'127.0.0.1:27017'发起hello请求时连接被拒绝]
报错截图

根因说明

Docker容器内部的127.0.0.1指向的是容器本身,而非部署MongoDB的Windows宿主机,因此容器内的Yii2/PHP服务无法通过该地址访问宿主机的数据库。

解决步骤

  • 第一步:修改MongoDB监听配置
    1. 关闭Windows本地的MongoDB服务
    2. 打开MongoDB配置文件mongod.cfg,默认路径为C:\Program Files\MongoDB\Server\<版本号>\bin\mongod.cfg
    3. 将net.bindIp配置项从默认的127.0.0.1修改为0.0.0.0,生产环境可替换为Docker虚拟网卡的IP段以提升安全性
    4. 保存配置后重启MongoDB服务,验证本地连接正常
  • 第二步:修改Yii2数据库连接配置
    1. 找到Yii2项目中MongoDB组件的配置文件,通常为config/db.php或config/web.php
    2. 将原连接地址127.0.0.1替换为host.docker.internal,该地址是Docker Desktop for Windows默认提供的宿主机访问别名
    3. 若别名不生效,可在Windows cmd执行ipconfig,查询Docker对应的虚拟网卡(一般名为vEthernet (WSL))的IPv4地址,填入连接配置
  • 第三步:放行Windows防火墙端口
    1. 打开Windows Defender防火墙高级设置,新建入站规则
    2. 规则类型选择「端口」,协议选择TCP,特定本地端口填入27017
    3. 选择「允许连接」,按需勾选适用的网络类型,设置规则名称后保存
  • 第四步:验证连接有效性
    进入PHP业务对应的Docker容器内部,执行curl host.docker.internal:27017,若返回It looks like you are trying to access MongoDB over HTTP on the native driver port.内容,说明网络连通正常,重启Yii2服务即可恢复数据库连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:30:02