Laravel本地连接Docker部署的MySQL报getaddrinfo失败问题求助
问题根因
报错php_network_getaddresses: getaddrinfo failed: No such host is known本质是主机名解析失败,核心原因是:mysql是Docker内部的服务名称,仅能被同一个Docker网络下的其他容器识别解析,而你的Laravel应用运行在本地物理机环境,不属于Docker容器网络,无法直接解析mysql这个主机名。
解决步骤
- 第一步:确认MySQL容器端口映射配置
检查你的docker-compose.yml中MySQL服务是否配置了端口映射,将容器内的3306端口暴露到宿主机,参考配置:
若你本地宿主机的3306端口已被其他服务占用,可改为services: mysql: image: mysql:你使用的版本号 # 保留你原有其他配置(环境变量、卷挂载等),新增以下端口映射段 ports: - "3306:3306""3307:3306",后续配置对应修改端口即可。修改配置后执行docker-compose up -d重启容器生效。 - 第二步:修改本地Laravel的.env配置
将DB_HOST从mysql改为127.0.0.1,同时删除配置项首尾多余的单引号(.env文件不需要额外加引号包裹值),修改后参考:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=select_elect DB_USERNAME=root DB_PASSWORD=root - 验证生效
配置修改后重启Laravel服务即可。如果仍连接失败,可先通过本地MySQL客户端工具尝试连接127.0.0.1:3306,确认容器运行正常、端口映射生效、账号密码和数据库权限配置正确。
内容的提问来源于stack exchange,提问作者user3445072
相关产品推荐
相关产品推荐

