Laravel应用Docker容器化失败退出码1,报SQLSTATE[HY000]错误
Laravel Docker 启动失败修复方案
核心错误原因
错误日志SQLSTATE[HY000] [2002] No such file or directory是Laravel应用容器无法正常连接MySQL容器导致,对应配置存在多处不匹配问题。
修复步骤
- 修正
.env文件的数据库连接配置,和docker-compose.yml中MySQL服务的配置完全对齐:
DB_CONNECTION=mysql DB_ENGINE=InnoDB # 容器间通信需使用MySQL服务名作为主机地址,不能写127.0.0.1 DB_HOST=db DB_PORT=3306 # 匹配docker-compose中配置的默认库名 DB_DATABASE=rubosa # 匹配docker-compose中配置的数据库用户名,也可使用root账号 DB_USERNAME=rubosa # 匹配docker-compose中配置的对应用户密码 DB_PASSWORD=rubosa
- 可选优化:避免MySQL未完成初始化就执行迁移导致偶发报错,修改
docker-compose.yml中app服务的command参数,增加端口等待逻辑:
command: bash -c 'apt install -y netcat && until nc -z db 3306; do echo "等待MySQL服务就绪..."; sleep 1; done && composer install && php artisan migrate && php artisan serve --host 0.0.0.0'
- 执行命令重启服务,清除旧配置残留:
# 停止并删除旧容器、挂载的MySQL数据卷 docker-compose down -v # 重新构建镜像并启动服务 docker-compose up --build
修复完成后访问http://localhost:8009即可打开Laravel应用。
内容的提问来源于stack exchange,提问作者Hamza Rana
相关产品推荐
相关产品推荐

