2015-05-26 1 views
2

Я создаю новое приложение Laravel 5 в контейнере докера. Я могу получить доступ к домашнему URL-адресу и получить приветственное сообщение. Я пытаюсь создать новые маршруты, и они тоже работают. Затем я запускаю контейнер-докер MariaDB для связи с приложением Laravel 5. Здесь начинаются проблемы. Когда я пытаюсь запустить миграции в Laravel 5 с помощью следующей команды:Приложение Laravel 5 не может подключить двигатель MariaDB в контейнере докера

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 и работает в контейнере докера. Этот контейнер-докер предоставляет порт 3306 и связан с контейнером, который запускает Laravel. Для того, чтобы связать контейнер я использовать следующую команду Docker:

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

Я также знаю, что мой MariaDB докер контейнер работает с правильными конфигурациями, потому что я использую Docker контейнер PhpMyAdmin, связанный с ним, и я могу соединиться с к база данных с успехом. Я связываю контейнер MariaDB с контейнером phpmyadmin так же, как я привязываю его к контейнеру Laravel (-link mariadb: mysql)

Почему я не могу подключиться к базе данных? Существует какая-либо конфигурация или модуль php для установки, которые отсутствуют?

+1

Ваши контейнеры для докеров имеют разные IP-адреса? – Hackerman

+1

https://docs.docker.com/articles/networking/ – Hackerman

+0

Да @RobertRozas, у моих контейнеров разные IP-адреса. – miguelbgouveia

ответ

2

В конце концов, это очень просто. Если я использую mysql-хост в своих переменных среды, он просто работает, не зная IP-адрес контейнера докеров-маркеров MariaDB. .env файл выглядит следующим образом:

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

Теперь я могу подключить двигатель MariaDB с успехом.

+0

Это было так очевидно, что чуть не ударило мне в лицо ... +1 – Hackerman

Смежные вопросы