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

Laravel 5 application can't connect MariaDB engine in docker container

我在 docker 容器中创建了一个新的 Laravel 5 应用程序。我可以访问主页 url 并收到欢迎消息。我尝试创建新路线,它们也在工作。然后我 运行 一个 MariaDB docker 容器到 link 到 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 并被 link 连接到 运行 Laravel 的容器。对于 link 容器,我使用以下 docker 命令:

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

我也知道我的 MariaDB docker 容器是 运行 正确的配置,因为我使用 phpmyadmin docker 容器 linked到它,我可以成功连接到数据库。我 link MariaDB 容器和 phpmyadmin 容器的方式与我 link 它到 Laravel 容器的方式相同(--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引擎了。