Symfony连接Docker MySQL报错:getaddrinfo无法解析db主机
解决Symfony连接Docker MySQL时的
getaddrinfo for db failed错误 你遇到的问题核心是宿主机无法解析Docker内部的db服务名:
- phpMyAdmin能正常连接,是因为它和
db容器处于同一个Docker网络中,Docker的内部DNS可以解析db这个服务名。 - 但你在宿主机直接执行Symfony的迁移命令时,宿主机的系统DNS不知道
db对应的IP,所以会抛出getaddrinfo错误。
方法一:修改数据库连接地址为宿主机端口
你的MySQL容器已经把3306端口映射到了宿主机的6033,直接修改.env里的DATABASE_URL:
DATABASE_URL="mysql://root:weply@127.0.0.1:6033/weply"
修改后在宿主机重新执行迁移命令即可,宿主机通过本地映射的6033端口访问MySQL容器。
方法二:在Docker容器内执行Symfony命令
如果你的Symfony项目本身也运行在Docker容器中(比如配置了php服务),直接进入容器内部执行命令:
docker-compose exec php php bin/console make:migration
(将命令中的php替换为你实际的Symfony容器服务名)
这种方式下,Symfony容器和db容器处于同一Docker网络,能正常解析db服务名,无需修改连接地址。
内容的提问来源于stack exchange,提问作者Toma Tomov
相关产品推荐
相关产品推荐

