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

Docker部署FastAPI+MySQL时出现2003错误无法连接127.0.0.1服务

Docker部署FastAPI连接MySQL报错2003问题解决

核心错误根因

你当前的报错是因为FastAPI中配置的数据库连接地址指向了app容器自身的127.0.0.1,而不是运行MySQL的db容器,再加上端口配置错误共同导致的,具体排查修改步骤如下:

1. 修改数据库连接地址

Docker Compose会为同一配置文件下的所有服务自动做内部DNS解析,你只需要把FastAPI中数据库配置的HOST地址从127.0.0.1改为db(和docker-compose里的MySQL服务名一致)即可。
如果你的数据库配置写在.env文件中,直接修改对应参数:

DB_HOST=db

2. 修正MySQL端口配置

MySQL默认监听容器内的3306端口,你当前的端口映射配置错误:

  • 把docker-compose.yml中db服务的ports改为"3307:3306"(宿主3307端口映射到容器3306端口)
  • FastAPI中的数据库PORT配置填3306,直接走容器内部网络访问,不需要用宿主映射的3307端口

3. 处理MySQL启动延迟问题

depends_on只能保证db容器优先启动,但MySQL自身初始化需要数秒时间,可能app启动时数据库还未就绪:

  • 方案1:在FastAPI的数据库连接逻辑中增加重试机制,连接失败后间隔2~3秒重试,最多重试5次
  • 方案2:在app服务的启动命令中增加端口等待逻辑,示例如下:
services:
  app:
    # 原有配置保留,新增command配置
    command: sh -c "sleep 5 && uvicorn main:app --host 0.0.0.0 --port 8000"

4. 清理无效配置

  • 删除db服务environment中的空行-,避免环境变量加载异常
  • 删掉app服务的links配置,该配置在新版Docker Compose中已废弃,不影响服务间通信
  • docker-compose.yml的version: '4'字段在当前新版Compose规范中已经不需要,可以直接删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:54:04