docker - Laravel 5应用程序无法连接docker容器中的MariaDB引擎

标签 docker laravel-5 mariadb

我在 Docker 容器中创建了一个新的 Laravel 5 应用程序。我可以访问主页网址并收到欢迎消息。我尝试创建新路线,它们也正在工作。然后我运行 MariaDB docker 容器来链接到 Laravel 5 应用程序。这就是问题开始的地方。 当我尝试使用以下命令在 Laravel 5 中运行迁移时:

php artisan migrate --force

我收到以下错误消息:

Can't connect to MySQL server on '127.0.0.1'

我的 .env 文件是这样的:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_DATABASE=blog
    DB_USERNAME=blog
    DB_PASSWORD=123456

我知道 Laravel 使用这些变量来连接数据库,因为它们存在于 Laravel 日志文件中,如下所示:

PDO->__construct(‘mysql:127….’, ‘blog’,  ‘123456’, Array)

数据库引擎是MariaDB,它运行在docker容器中。该 docker 容器公开端口 3306 并链接到运行 Laravel 的容器。要链接容器,我使用以下 docker 命令:

docker run –i –t - - link mariadb:mysql miguelbgouveia/laravel:v3 /bin/bash 

我还知道我的 MariaDB docker 容器正在以正确的配置运行,因为我使用链接到它的 phpmyadmin docker 容器,并且我可以成功连接到数据库。我以与将 MariaDB 容器链接到 Laravel 容器相同的方式将 MariaDB 容器与 phpmyadmin 容器链接起来 (--link mariadb:mysql)

为什么我无法连接到数据库?是否缺少任何要安装的配置或 php 模块?

最佳答案

毕竟很简单。如果我在环境变量中使用 mysql 主机,它就可以工作,而无需知道 MariaDB docker 容器的 IP 地址。 .env 文件如下所示:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_DATABASE=blog
DB_USERNAME=blog
DB_PASSWORD=123456

现在我可以成功连接MariaDB引擎了。

关于docker - Laravel 5应用程序无法连接docker容器中的MariaDB引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462384/

相关文章:

MySQL - 授予访问权限不起作用

带有 Docker 插件的 Jenkins java.lang.NullPointerException : uri was not specified

mysql - 使用docker-compose无法在同一网络中连接mysql和spring boot

docker - 错误:约束无法满足:在更新 Alpine docker文件中的软件包时

php - 如果我在 Laravel 5 项目中使用 andersao/l5-repository 会破坏控制反转原则吗?

laravel-5 - Laravel JobId 如何使用它来检查工作是否完成

php - Laravel中的前端错误显示架构

mysql - 使用mysqladmin设置数据库字符集的问题

apache - Tomcat 容器和 Docker 容器有什么区别?

mysql - 将 Mysql 5.5.33 复制到 MariaDB 5.5.33 问题