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

WSL2中DDev项目启动端口不可用且路由访问失败问题

解决WSL2环境下DDEV端口占用及路由访问失败问题

问题描述

启动WSL2中的DDEV项目时频繁报错:

Error response from daemon: Ports are not available: exposing port TCP 127.0.0.1:443 -> 0.0.0.0:0: listen tcp 127.0.0.1:443: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

偶尔会报80端口占用,但启动前已确认WSL内部和Windows主机上这些端口均未被占用。可正常启动其他占用同端口的Docker容器,手动执行路由启动命令:

COMPOSE_PROJECT_NAME=ddev-project docker-compose -f /home/crs/.ddev/.router-compose-full.yaml -p ddev-router up -d

路由看似运行正常,但仍无法访问项目,ddev debug test执行失败。更新重装Docker Desktop和DDEV、修改router_http_port和router_https_port为其他端口后,项目启动成功,但仍无法通过DDEV路由访问,仅能绕过路由直接访问Web容器。

解决方案

1. 修复WSL2端口转发缓存冲突

WSL2的端口转发缓存可能出现异常,导致端口绑定失败:

  • 关闭所有Docker容器和Docker Desktop
  • 在Windows主机PowerShell中执行命令重启WSL2:
    wsl --shutdown
    
  • 重新启动WSL2和Docker Desktop后,尝试启动DDEV项目

2. 重置DDEV路由配置

手动启动路由可能导致配置混乱,重置路由环境:

  • 在WSL2中执行:
    ddev poweroff
    ddev router stop
    
  • 删除残留的路由容器:
    docker rm -f ddev-router
    
  • 重新启动DDEV项目:
    ddev start
    

3. 排查Windows代理干扰

Windows代理软件可能阻断WSL2的端口转发:

  • 关闭Windows主机上的代理工具(如Clash、Charles等)
  • 在WSL2中清除代理环境变量:
    unset http_proxy https_proxy ALL_PROXY
    
  • 重新启动DDEV项目

4. 调整DDEV路由绑定策略

修改DDEV配置,让路由绑定到全接口而非回环地址:

  • 编辑项目的.ddev/config.yaml,添加或修改:
    router_bind_all_interfaces: true
    
  • 保存后重启DDEV项目,路由会绑定到0.0.0.0,避免回环地址的端口转发冲突

5. 修复DNS解析问题

无法通过路由访问可能是域名解析失败:

  • 在Windows主机上ping项目域名(如project-name.ddev.site),确认解析到WSL2的IP
  • 刷新Windows DNS缓存:
    ipconfig /flushdns
    
  • 在WSL2中重启DNS服务:
    sudo systemctl restart systemd-resolved
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:41:29