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

Docker容器部署极简Flask服务无法外部访问问题排查解决

Docker部署Flask服务外部无法访问排查解决

问题场景

在Windows原生环境可正常运行的极简Flask服务,迁移到Docker容器部署后外部无法访问。已按照通用排查方案配置Flask服务监听0.0.0.0地址,问题仍存在。

项目结构

├── application/
│   ├── Dockerfile
│   ├── requirements.txt
│   ├── service.py

配置与运行信息

Dockerfile配置

# syntax=docker/dockerfile:1

FROM python:3.6.5-alpine

RUN apk --update add bash nano

COPY requirements.txt /tmp/
RUN pip3 install -r /tmp/requirements.txt

COPY . .

ENV FLASK_ENV=development
CMD ["python", "service.py"]  

Flask服务代码(service.py)

from flask import Flask

app = Flask(__name__)

@app.route('/')
def greetings():
    return "Welcome my service!"

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

容器启动日志

容器以交互模式启动时日志输出无报错:

* Serving Flask app 'service' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 277-473-905

异常现象

  • 浏览器访问日志中输出的地址http://172.17.0.2:5000时,页面长时间加载后提示无法访问,报错为ERR_CONNECTION_TIMED_OUT
  • Windows原生环境下通过以下命令启动服务可正常访问:
export FLASK_APP=service
export FLASK_ENV=development
flask run
  • 已测试的容器启动命令:
docker run --rm -it  scone:latest
docker run --rm -p 5000:5000 scone:latest

解决方法

问题核心是访问方式错误,按以下要求操作即可正常访问:

  • 启动容器时必须添加-p 5000:5000参数,完成容器5000端口到宿主机5000端口的映射
  • 无需访问容器日志输出的Docker内部IP地址(172.17.0.2属于Docker网桥分配的内部网段地址,默认无法直接从宿主机外部访问),直接在宿主机浏览器访问http://localhost:5000即可正常打开服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:00:59