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

如何让WSL2中的Quarkus 3.17.5监听0.0.0.0而非localhost

WSL2下Quarkus设置quarkus.http.host=0.0.0.0显示localhost的解决办法

问题现象

在WSL2环境中运行Quarkus项目时:

  • 设置quarkus.http.host=127.0.0.1或具体IP(如172.21.11.71),执行./mvnw quarkus:dev启动后,日志正常显示对应IP的9080端口监听地址
  • 设置quarkus.http.host=0.0.0.0时,日志却显示监听http://localhost:9080,导致无法从Docker容器连接Quarkus服务(需要Quarkus监听0.0.0.0以允许外部访问)

解决步骤

1. 验证实际监听状态

日志显示localhost可能只是Quarkus dev模式的代理提示,实际服务可能已经在监听0.0.0.0。在WSL2终端执行以下命令检查:

netstat -tulpn | grep 9080

如果输出包含0.0.0.0:9080,说明服务实际已监听所有网卡,Docker容器可直接通过WSL2的IP(如172.21.11.71)访问9080端口,无需额外配置。

2. 关闭dev模式代理(若实际监听为localhost)

如果上述命令显示仅监听127.0.0.1:9080,则需要关闭Quarkus dev模式的内置代理:

  • 方式一:在application.properties中添加配置:
    quarkus.dev.proxy.enable=false
    
  • 方式二:启动时临时指定参数:
    ./mvnw quarkus:dev -Dquarkus.dev.proxy.enable=false
    

重新启动后,日志会正确显示http://0.0.0.0:9080,确保外部容器可以访问。

3. 确保WSL2端口转发正常

若Docker容器运行在Windows的Docker Desktop中,需确认WSL2的9080端口已转发到Windows主机:

  • 在Windows命令行执行以下命令查看现有转发规则:
    netsh interface portproxy show all
    
  • 若没有对应转发规则,手动添加(替换172.21.11.71为你的WSL2实际IP):
    netsh interface portproxy add v4tov4 listenport=9080 listenaddress=0.0.0.0 connectport=9080 connectaddress=172.21.11.71
    

完成后,Docker容器可通过host.docker.internal:9080或Windows主机IP访问Quarkus服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:08:19