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

Laravel 8 migration运行正常 但Docker环境下页面请求MySQL拒绝连接

问题排查与解决方案

故障根因

  • 你在本地宿主机执行php artisan migrate、php artisan db:seed命令时,请求指向宿主机的0.0.0.0:3306,由于docker-compose已经将mysql容器的3306端口映射到宿主机,因此请求可以正常到达mysql服务,命令执行成功。
  • 但Laravel服务运行在web容器内部时,.env配置的DB_HOST=0.0.0.0指向的是web容器自身的回环地址,web容器内没有运行MySQL服务,因此抛出连接拒绝错误。

修复步骤

  1. 打开项目根目录的.env文件,修改数据库主机配置:
    将
DB_HOST=0.0.0.0

替换为

DB_HOST=mysql

这里的mysql对应docker-compose.yml中定义的MySQL服务的服务名,docker内部DNS会自动将服务名解析为对应容器的内网IP。

  1. 重启docker-compose服务使配置生效,在项目根目录执行命令:
docker-compose down && docker-compose up -d

补充说明

后续如果需要执行artisan命令,建议直接进入web容器内操作,避免出现宿主机与容器环境配置不一致的问题,执行命令示例如下:

# 进入web容器执行migrate命令
docker-compose exec web php artisan migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:18:02