在 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
。
我想 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
。