2015-05-26 37 views
2

我在碼頭集裝箱中創建了一個新的Laravel 5應用程序。我可以訪問家庭網址並獲得歡迎消息。我嘗試創建新的路線,他們也在工作。然後我運行一個MariaDB docker容器來鏈接到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,它在Docker容器中運行。這個碼頭容器公開端口3306並鏈接到運行Laravel的容器。要鏈接我用下面的泊塢窗命令容器:

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

我也知道,我的MariaDB的碼頭工人,容器與正確的配置運行,因爲我用的是與它的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主機,它只需要知道MariaDB docker容器的IP地址就行。 的.ENV文件是這樣的:

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

現在我可以成功連接MariaDB的引擎。

+0

這是如此明顯,幾乎打我的臉... +1 – Hackerman