在docker上使用laravel时无法连接到mysql数据库(未找到,pdo,连接被拒绝)
Posted
技术标签:
【中文标题】在docker上使用laravel时无法连接到mysql数据库(未找到,pdo,连接被拒绝)【英文标题】:cant connect to mysql database while using laravel on docker(not found,pdo,connection refused) 【发布时间】:2021-07-07 05:34:24 【问题描述】:我想 dockerize 我的 laravel 应用程序。
sudo docker pull mysql/mysql-server:latest
sudo docker run --name=mysql -e MYSQL_ROOT_PASSWORD=mypass -d mysql/mysql-server:latest
sudo docker pull phpmyadmin/phpmyadmin:latest
sudo docker run --name phpmyadmin -d --link mysql:db -p 8081:80 phpmyadmin/phpmyadmin
所以我配置了我的用户并在 phpmyadmin 中手动导入了我的数据库
我使用我的 docker 文件等启动我的 laravel 容器
#一些其他代码...
EXPOSE 8000
CMD php artisan serve --host=0.0.0.0 --port=8000
我的环境文件
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:aS838/4/6V7n9VQXDUdiQBDxDiM7sWhSc1ym0KahcZY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=mypass
如果我将 db_host 保持为 127.0.0.1,如果我将 db_host 作为 mysql(这是我正在运行的 mysql 容器名称),我会收到连接被拒绝的错误,如果我将 db_host 作为本地主机,我会收到 pdo 错误***修复了你必须给你的本地网络ips而不是我不想这样做,因为我有自己的理由解决这个问题? .任何帮助将不胜感激
【问题讨论】:
【参考方案1】:您应该为所有容器添加--network
到docker run
命令,以便它们位于同一个网络中,例如:
docker network create SOME_NAME
sudo docker run --network SOME_NAME --name=mysql -e MYSQL_ROOT_PASSWORD=mypass -d mysql/mysql-server:latest
sudo docker run --network SOME_NAME --name phpmyadmin -d --link mysql:db -p 8081:80 phpmyadmin/phpmyadmin
另外DB_HOST
的值应该从127.0.0.1
更改为mysql
。
【讨论】:
以上是关于在docker上使用laravel时无法连接到mysql数据库(未找到,pdo,连接被拒绝)的主要内容,如果未能解决你的问题,请参考以下文章
在 000webhost 上托管时无法使用 jwt 连接到 laravel api
Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql
无法连接到 Anyconnect *** 上的 docker