在 docker 上使用 laravel 时无法连接到 mysql 数据库(未找到,pdo,连接被拒绝)

cant connect to mysql database while using laravel on docker(not found,pdo,connection refused)

我想 docker调整我的 laravel 应用程序。

我像这样启动了 mysql 和 php 两个容器

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 错误 我在几个 Whosebug 修复程序中看到找不到错误,你必须给你的本地网络 ips 而不是我不想这样做,因为我有我自己的理由绕过这个? .任何帮助将不胜感激

您应该为所有容器将 --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