Laravel 5应用程序无法在Docker容器

时间:2015-05-26 15:08:42

标签: 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容器与phpmyadmin容器链接的方式与将其链接到Laravel容器的方式相同(--link mariadb:mysql)

为什么我无法连接数据库?有什么配置或php模块可以安装缺少吗?

1 个答案:

答案 0 :(得分:3)

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

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

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