Docker环境下Symfony连接数据库报错:Connection refused
Docker环境下Symfony连数据库报Connection refused的解决方案
最关键的问题:数据库主机配置错误
你的Symfony .env 里的 DB_HOST=127.0.0.1 配置不符合Docker容器间通信逻辑,分两种场景修正:
场景1:Symfony项目在Docker容器内运行
Docker容器内的127.0.0.1指向容器自身,而数据库是独立的db服务容器,需将主机替换为Docker Compose中定义的服务名:
DB_HOST=db DB_PORT=3306
同时确保Symfony的容器也加入dev网络(在docker-compose.yml的Symfony服务配置中添加networks: - dev),否则容器间无法通过服务名通信。
场景2:Symfony项目在宿主机运行
这种情况下127.0.0.1是正确的,但需确认以下几点:
- 数据库容器是否正常启动:执行
docker-compose ps查看db服务状态是否为Up - 端口映射是否生效:执行
netstat -tulpn | grep 3306确认宿主机3306端口被数据库容器占用 - 数据库是否完成初始化:刚启动的MariaDB容器需要几秒时间完成初始化,不要立即尝试连接
额外检查项
- 核对
.env中的DB_USER、DB_PASSWORD、DB_NAME与docker-compose.yml里的数据库环境变量完全一致 - 查看数据库日志排查问题:执行
docker-compose logs db,检查是否有启动失败、权限错误等信息 - 修改
.env后清除Symfony缓存:php bin/console cache:clear --env=dev
内容的提问来源于stack exchange,提问作者sayou
相关产品推荐
相关产品推荐

