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

Docker部署Flask+Redis应用Flask退出码0 不修改app.py如何解决

问题根因

  • docker-compose.yml中web-fe服务显式配置的command: python app.py,会直接覆盖Dockerfile中定义的flask run启动命令
  • 你的app.py没有if __name__ == "__main__"启动逻辑,直接执行python app.py只会完成变量、路由加载后就结束进程,退出码0就是程序正常执行完毕的返回值
  • 额外隐患:你配置的named volume挂载到了/code目录,会覆盖容器构建阶段拷贝进去的代码,首次启动空volume时甚至会出现找不到app.py的问题

解决方法(无需修改app.py)

二选一即可:

方案1:删除docker-compose中覆盖的command字段

直接删掉web-fe服务里的command: python app.py配置行,容器会默认使用Dockerfile里定义的flask run命令启动,flask会自动读取FLASK_APP环境变量加载应用实例,保持进程常驻。
修改后的web-fe服务配置参考:

web-fe:
  build: .
  ports:
    - target: 5000
      published: 5000
  networks:
    - counter-net
  # 无代码持久化需求建议删除该volume挂载,避免后续镜像更新后代码被旧volume内容覆盖
  # volumes:
  #   - type: volume
  #     source: counter-vol
  #     target: /code

如果有本地开发热更新需求,可以改用bind mount挂载本地源码目录,不要用named volume挂载代码目录。

方案2:修改docker-compose的command为flask启动命令

如果你需要保留command配置,直接把值替换为Dockerfile中定义的启动命令即可:

command: ["flask","run","--host=0.0.0.0","--port=5000"]

修改完成后重新执行docker-compose up --build即可正常启动Flask服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:06:06