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

Docker容器运行正常但localhost无法访问问题求助

Flask应用Docker部署后localhost无法访问的问题

问题描述

我将Python Flask应用部署在Docker容器中,创建容器时配置端口映射为8000:5000(主机端口8000映射到容器端口5000)。启动容器后,终端输出如下:

2024-05-10 09:43:06  * Running on http://127.0.0.1:5000
2024-05-10 09:43:06 Press CTRL+C to quit
2024-05-10 09:43:06  * Restarting with stat
2024-05-10 09:43:06  * Debugger is active!
2024-05-10 09:43:06  * Debugger PIN: 132-936-545
2024-05-10 09:43:06  * Serving Flask app 'app'
2024-05-10 09:43:06  * Debug mode: on

但在浏览器中访问localhost:8000时,页面提示「This site can't be reached」。

问题原因

核心问题是Flask服务仅绑定了容器内部的回环地址127.0.0.1。这个地址只能在容器内部访问,主机无法通过端口映射连接到该地址上的服务。Docker的端口映射需要容器内的服务监听0.0.0.0(所有可用网卡),才能允许外部主机访问。

解决方案

你需要修改Flask的启动配置,让服务监听0.0.0.0,具体有三种方式:

1. 启动命令添加host参数

如果通过flask run命令启动服务,直接指定host:

flask run --host=0.0.0.0 --port=5000

2. 修改代码中的app.run()配置

如果代码里直接调用app.run(),修改为:

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

3. 通过环境变量设置

添加环境变量FLASK_RUN_HOST来指定监听地址:

# 启动容器时设置环境变量
docker run -p 8000:5000 -e FLASK_RUN_HOST=0.0.0.0 your-flask-image

或者在Dockerfile中添加:

ENV FLASK_RUN_HOST=0.0.0.0

修改完成后,容器终端的输出会变成:

* Running on http://0.0.0.0:5000

此时再在主机浏览器访问localhost:8000即可正常连接到Flask应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:30:04