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

如何从WSL2的Docker容器中调用Windows上的FastAPI服务?

解决WSL2 Docker容器访问Windows主机FastAPI的问题

以下是几种可行的解决方案,按操作复杂度排序:

1. 使用WSL2专属的Windows主机IP

WSL2环境下,Windows主机的IP可通过WSL终端命令获取:

cat /etc/resolv.conf

输出内容里nameserver字段对应的IP,就是Windows主机在WSL2网络中的可访问地址。将Node API的请求目标改为该IP加FastAPI的服务端口,例如http://192.168.100.5:8000/api/your-endpoint。

注意:WSL2重启后该IP可能会变化,若需固定,可手动配置WSL2网络或给Windows设置静态IP。

2. 修改FastAPI的绑定地址

默认FastAPI仅绑定127.0.0.1,仅允许本地请求。要让外部(包括WSL2和Docker容器)访问,需将服务绑定到所有网卡:

  • 启动命令修改为:
uvicorn main:app --host 0.0.0.0 --port 8000
  • 或在代码中直接指定:
if __name__ == "__main__":
    uvicorn.run("main:app", host="0.0.0.0", port=8000)

3. 采用Docker Host网络模式(WSL2后端Docker适用)

如果你的Docker使用WSL2作为后端,启动Node容器时添加--network host参数,容器会直接复用WSL2的网络栈。此时容器内用localhost即可访问Windows上的FastAPI(需先完成步骤2的绑定配置)。示例启动命令:

docker run --network host -d your-node-api-image

注意:该模式下容器端口会直接占用WSL2的端口,需避免端口冲突。

4. 配置Windows防火墙规则

确保Windows防火墙允许FastAPI的服务端口接收WSL2网络的请求:

  • 打开Windows Defender防火墙,点击「高级设置」
  • 新建入站规则,选择「端口」类型,点击下一步
  • 输入FastAPI的服务端口(如8000),选择TCP协议,点击下一步
  • 选择「允许连接」,点击下一步
  • 按需勾选「域」「专用」「公网」(建议至少勾选专用),点击下一步
  • 命名规则后完成配置

内容的提问来源于stack exchange,提问作者Alberto lopez jimenez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:15:03