Docker容器环境下Laravel的php artisan migrate无法执行问题
解决Docker PostgreSQL容器与Laravel连接的migrate报错问题
我刚经历了一模一样的折腾!花了一整天尝试把Docker里的PostgreSQL数据库连到Laravel应用,用Postico能顺利连上数据库,但一执行php artisan migrate就弹出报错:
SQLSTATE[08006] [7] could not connect to server...
临时快速解决方案
- 先获取运行中PostgreSQL容器的IP地址,执行命令:
docker inspect <postgres容器名称/ID> | grep IPAddress - 打开Laravel项目根目录的
.env配置文件,更新两个参数:- 将
DB_HOST替换为刚才查到的容器IP - 确认
DB_PORT设置为容器映射的PostgreSQL端口(默认是5432,若自定义过则用对应端口)
- 将
- 保存文件后重新执行
php artisan migrate,问题就能解决了。
长期最佳实践
上面的方法只是临时解决,因为Docker容器重启后IP可能会发生变化。更稳妥的做法是:直接将.env里的DB_HOST设置为你的PostgreSQL容器的服务名称(比如在docker-compose.yml里定义的postgres服务名),Docker内部的DNS会自动将这个名称解析到对应的容器IP,不管容器怎么重启都不需要修改配置。
内容的提问来源于stack exchange,提问作者esilik
相关产品推荐
相关产品推荐

