使用Docker Compose部署Flask无法连接localhost的问题排查
问题解决:Flask应用在Docker Compose中无法通过localhost访问
核心问题
你在docker-compose配置里设置了FLASK_RUN_HOST=127.0.0.1,这会导致Flask仅监听容器内部的回环地址,主机无法通过端口映射访问到容器内的服务,从而出现连接重置错误。
解决方案
方案1:修改docker-compose.yml的环境变量
将FLASK_RUN_HOST的值改为0.0.0.0,让Flask监听容器的所有网络接口:
web: image: application depends_on: - db - cache ports: - "5000:5000" environment: - FLASK_APP=app.py - FLASK_RUN_HOST=0.0.0.0 # 修改此处 volumes: - app_code:/code
方案2:修改Flask代码中的启动命令
在app.run()中明确指定host参数,覆盖环境变量的设置:
if __name__ == "__main__": app.run(debug=True, host='0.0.0.0') # 添加host参数
额外注意事项
虽然当前日志无报错,但depends_on仅保证容器启动顺序,不保证db和cache服务完全就绪。如果后续遇到数据库连接失败的问题,可以添加健康检查或使用等待脚本(比如wait-for-it)确保依赖服务就绪后再启动web容器。
内容的提问来源于stack exchange,提问作者JoJoWasACode
相关产品推荐
相关产品推荐

