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

Docker部署Flask应用运行卡顿、请求后冻结及文件修改无法同步问题咨询

问题1:应用运行卡顿、跳转无响应故障定位与修复

根因

  • Flask默认自带的Werkzeug开发服务器为单线程模式,同一时间仅能处理1个请求,前序请求未完全释放连接时,后续请求会直接阻塞,就会出现跳转无响应的情况。你在宿主机本地运行时大概率开启了多线程/debug模式,手动在Docker容器内启动时未加对应参数就会触发该问题。
  • 你当前docker-compose配置中web服务的启动命令为tail -f /dev/null,仅做容器保活用,需要手动exec进入容器启动服务,没有固定启动参数也容易出现配置不一致的问题。

修复方案

启动Flask时添加多线程参数,两种实现方式二选一即可:

  1. 代码层面修改启动逻辑:
if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, threaded=True)
  1. 命令行启动时加参数:
    flask run --host=0.0.0.0 --port=5000 --threaded
    另外可以直接把启动命令写到docker-compose里,避免手动启动的配置偏差:把web服务下的command: tail -f /dev/null替换为command: flask run --host=0.0.0.0 --port=5000 --threaded即可。
问题2:本地文件修改容器内不同步故障定位与修复

根因

挂载路径完全不匹配:

  • Dockerfile中定义的工作目录为/base,构建镜像时你把本地./app目录下的代码复制到了容器内的/base/app路径下,你的应用实际读取的是该路径下的代码
  • docker-compose中你配置的卷挂载规则为${PWD}/app/:/usr/src/app/,是把本地代码挂载到了容器的/usr/src/app路径,该路径根本没有被应用读取,修改本地文件自然不会同步到应用生效的目录

修复方案

修改docker-compose的卷挂载路径,和镜像内的代码路径保持一致:
把web服务下的volumes配置改成:

volumes:
  - ${PWD}/app/:/base/app/
  # 如果需要修改根目录下的base_app.py、config.py等文件也同步,再额外加对应的挂载规则即可,比如:
  - ${PWD}/base_app.py:/base/base_app.py
  - ${PWD}/config.py:/base/config.py

修改后重启docker-compose服务即可生效,后续本地修改app目录下的代码会直接同步到容器内应用读取的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:03