【问题标题】:Laravel 5 application can't connect MariaDB engine in docker containerLaravel 5 应用程序无法在 docker 容器中连接 MariaDB 引擎
【发布时间】:2015-05-26 15:08:42
【问题描述】:

我在 docker 容器中创建了一个新的 Laravel 5 应用程序。我可以访问主页 url 并收到欢迎消息。我尝试创建新路线,它们也在工作。然后我运行一个 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 模块?

【问题讨论】:

  • 你的 dockers 容器有不同的 ip 对吧?
  • 是的@RobertRozas,我的容器有不同的 IP。
  • 您必须在您的 maria-db 客户端中创建一个用户,链接到您的 apache docker 的 ip(即:apache docker ip: 192.168.1.112,然后在您的数据库 docker 中创建用户 remoteuser@ 192.168.1.112)
  • 它可以工作@RobertRozas,但我的问题是容器启动后只知道 MariaDB 的 IP。我想在运行它们之前配置容器。这可以使用容器之间的链接吗?

标签: docker laravel-5 mariadb


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2020-04-18
    • 2021-06-18
    • 2019-05-24
    • 2020-12-23
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多