Docker容器中运行Laravel迁移报错:SQL连接拒绝如何解决?
解决Laravel Docker环境下数据库连接拒绝问题
1. 修正数据库端口配置
你的.env文件中DB_PORT设置为33060,这是错误的:
DB_PORT=33060
Docker容器内的MySQL默认端口为3306,修改为:
DB_PORT=3306
2. 修正MySQL环境变量拼写错误
docker-compose.yml中MySQL的环境变量MYSQL_DATABSE拼写错误,少了一个字母S:
MYSQL_DATABSE: laravel
改为正确的:
MYSQL_DATABASE: laravel
3. 确保MySQL容器完全启动后再执行迁移
MySQL容器启动需要时间完成初始化,直接执行迁移会因数据库未就绪导致连接拒绝。可以通过两种方式处理:
- 手动等待:启动容器后,等待10-15秒再进入Laravel容器执行迁移
- 命令等待:进入Laravel容器后,先执行循环命令等待MySQL就绪(需容器内安装
netcat,大部分镜像已自带):
while ! nc -z mysql-app 3306; do sleep 1; done
等待完成后再执行php artisan migrate
4. 重新加载配置并重启容器
修改配置后,执行以下步骤生效:
- 停止并删除现有容器:
docker-compose down
- 重新构建并启动容器:
docker-compose up --build -d
- 进入Laravel容器后,清理配置缓存:
php artisan config:clear
之后再执行迁移命令即可。
内容的提问来源于stack exchange,提问作者Icaro Vinicius
相关产品推荐
相关产品推荐

