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

Flask应用Docker部署后端口从5888变为5000的问题咨询

问题原因分析

核心问题出在两种启动方式的本质差异:

  1. 本地运行时,你直接执行python app.py,触发了代码里的if __name__ == "__main__"代码块,这里明确指定了port=5888,因此应用会以5888端口启动。
  2. Docker容器内采用python3 -m flask run --host=0.0.0.0命令启动Flask,这种属于Flask的命令行启动模式,不会执行你代码里的if __name__ == "__main__"逻辑,而是默认使用Flask的内置默认端口5000,完全忽略了你在代码中设置的端口参数。

另外你的Dockerfile还有两处明显问题:

  • WORKDIR使用了Windows风格路径C:\Users\heman\PycharmProjects\dock_test\main.py,但容器基于Ubuntu镜像(Linux环境),该路径无效,应改为Linux风格路径,比如/app。
  • ENV FLASK_APP指定为main.py,但你的主代码文件是app.py,这会导致Flask找不到正确的应用入口,需修正为ENV FLASK_APP=app.py。
解决方法

可以任选一种方式修正:

方式一:修改启动命令,显式指定端口

将Dockerfile中的CMD指令改为:

CMD ["python3","-m","flask","run","--host=0.0.0.0","--port=5888"]

方式二:改用直接执行脚本的方式启动

修改Dockerfile的CMD为直接运行app.py:

CMD ["python3", "app.py"]

同时需要修改app.py中的启动代码,添加host="0.0.0.0"(否则容器外无法访问应用):

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:10:13