Windows11+WSL2 Ubuntu20.04环境下Docker部署Flask应用页面加载超时问题求助
解决Docker部署Flask应用无法访问的问题
你的问题核心出在Dockerfile里的COPY命令语法错误,这导致应用代码没有被正确复制到容器中,进而引发网络访问超时。下面是具体的排查和修复步骤:
1. 修正Dockerfile的COPY命令
你当前的COPY命令写法存在语法问题:
COPY . ./app /app/
这种写法会把本地根目录(.)和本地./app文件夹的内容混杂复制到容器的/app目录下,造成代码路径混乱,甚至可能运行的不是你修改过的、监听0.0.0.0的main.py文件。
把这行改成正确的写法,将本地项目根目录的所有内容完整复制到容器的/app工作目录:
COPY . /app/
2. 重新构建并运行容器
修复后执行以下命令重新构建镜像并启动容器:
docker build -t s-o-question:latest . docker run -p 5000:5000 s-o-question
此时观察控制台输出,应该显示:
Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
如果还是显示127.0.0.1,说明容器内运行的main.py没有正确加载你设置的监听地址,可以进入容器验证代码:
# 获取容器ID docker ps # 进入容器终端 docker exec -it <你的容器ID> bash # 查看main.py的内容 cat app/main.py
确认代码里的app.run方法确实包含host='0.0.0.0'参数。
3. 测试访问有效性
- 在WSL2内部,执行
curl http://localhost:5000,如果返回Hello big world,说明容器内应用正常,端口映射生效。 - 在Windows系统中,直接打开浏览器访问
http://localhost:5000,应该能正常加载页面。
额外检查项
- 确保Docker Desktop的设置中已启用"Use the WSL 2 based engine",并且Ubuntu-20.04被设为Docker的默认发行版。
- 确认本地防火墙没有阻止5000端口的流量。
内容的提问来源于stack exchange,提问作者konrad-h
相关产品推荐
相关产品推荐

