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

Docker Flask容器自动退出求助:无法连接MySQL与访问应用

Flask容器启动后立即退出(Exited (1))的排查与解决

1. 优先查看容器日志定位错误

容器退出代码1通常是应用运行时抛出异常导致的,直接拉取日志是最快的问题定位方式:

docker logs flaskapp

日志会显示python app.py执行过程中的具体报错,比如MySQL连接失败、环境变量读取异常、依赖包缺失等关键信息。

2. 确认MySQL容器状态与网络连通性

  • 先检查MySQL容器是否正常运行,且处于指定网络中:
    docker ps | grep mysql
    
    如果MySQL容器未启动,先启动它,确保容器名称为mysql(与你设置的MYSQL_HOST环境变量值一致),且加入了twotier网络。
  • 临时启动Flask容器测试网络连通性:
    docker run --rm -it --network=twotier flaskapp:latest bash
    
    进入容器后,先测试与MySQL的网络连通:
    ping mysql
    
    再用MySQL客户端验证账号密码和数据库是否可用:
    mysql -h mysql -u admin -padmin myDb
    

3. 验证环境变量是否正确传递

检查容器内的环境变量是否正确设置:

# 若容器已退出,用上面的临时启动方式进入容器后执行
env | grep MYSQL_

确认MYSQL_HOST、MYSQL_USER等变量的拼写和值是否与启动命令一致,避免因拼写错误导致连接失败。

4. 检查应用代码的数据库连接逻辑

查看仓库中的app.py代码,确认:

  • 是否正确通过os.getenv()读取环境变量,有没有错误的默认值覆盖了传入的变量
  • 是否在MySQL容器完全就绪前就发起了连接请求(可添加连接重试逻辑避免启动时的时序问题)

5. 验证Dockerfile构建的镜像完整性

检查Dockerfile是否安装了所有必要依赖(比如flask、mysql-connector-python等),工作目录设置是否正确,启动命令python app.py是否符合代码结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:13:09