Docker容器中Python Web服务无法访问问题求助
问题排查与解决方案
1. 修正Django服务器绑定地址
你的CMD指令中,runserver未指定监听地址,Django开发服务器默认仅绑定容器内部的127.0.0.1,导致宿主机(Windows)无法访问。需要修改Dockerfile的启动命令:
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
2. 恢复EXPOSE指令(可选但建议)
虽然EXPOSE不直接影响端口转发,但它能明确容器对外暴露的端口,让配置更清晰:
EXPOSE 8000
3. 重新构建并启动服务
执行以下命令更新容器镜像并重启服务:
docker compose down docker compose build docker compose up
4. 验证容器内端口监听状态
如果仍无法访问,进入容器确认服务是否真的在监听8000端口:
# 获取mo_backend容器ID docker ps # 替换<container_id>为实际容器ID,检查端口监听 docker exec <container_id> netstat -tulpn
正常输出中应能看到0.0.0.0:8000被Python进程占用。
5. WSL端口转发排查(若上述步骤无效)
WSL2的端口转发偶尔会出现异常,可尝试:
- 重启WSL:执行
wsl --shutdown,重新打开WSL终端后启动服务 - 在WSL内部访问
localhost:8000,如果能访问,说明是Windows与WSL的端口转发问题,可重启Windows的Host Network Service服务
内容的提问来源于stack exchange,提问作者Alan Wang
相关产品推荐
相关产品推荐

