Docker部署FastAPI时Uvicorn绑定主机IP失败的问题求助
Docker部署FastAPI时Uvicorn绑定主机IP失败的问题求助
各位大佬好,我正在做一个小实验,遇到了个搞不懂的问题,想请大家帮忙看看。
我基于Python基础镜像搭建了一个简单的FastAPI Web服务,容器启动的最终CMD命令是:
CMD ["uvicorn","myapp:app","--port","8080", "--reload"]
我用这条Docker命令启动容器:
docker run -it --name t1 --rm -p 8080:8080 image_name
容器能正常运行,但我在宿主机浏览器访问http://localhost:8080/却完全连不上(我可以百分百确认FastAPI的端点是没问题的)。
我猜测问题出在绑定的IP上:Uvicorn默认应该是绑定容器自身的IP,毕竟我在容器内部执行curl localhost:8080是能正常访问服务的。
于是我尝试把Uvicorn的--host参数设置为从容器视角看到的宿主机IP——也就是172.17.0.1,把CMD改成了这样:
CMD ["uvicorn","myapp:app","--host","172.17.0.1","--port","8080", "--reload"]
结果这次容器直接启动失败,抛出了这个错误:
ERROR:[Errno 99] Cannot assign requested address
我知道把--host设为0.0.0.0是能解决问题的,但我就是想让容器的端口只绑定到宿主机IP,不想监听所有地址。有没有大佬知道该怎么实现这个需求?另外也想请教下,为什么绑定172.17.0.1会出现这个错误呢?
备注:内容来源于stack exchange,提问作者Checco
相关产品推荐
相关产品推荐

