2016-12-29 150 views
1

所以我有3個docker容器,一個使用PHP + PhalconPHP,一個使用MySQL,另一個使用Web服務器。現在我的主機系統上,我可以連接到MySQL在泊塢窗的容器,我也可以用PDO使用下面的代碼Phalcon,Docker MySQL連接失敗

new PDO('mysql:host=mysql;port=1024;dbname=database', 'root', 'password'); 

連接,但由於某種原因,爾康框架是無法使用連接到MySQL數據庫config.php文件像這樣

return new \Phalcon\Config([ 
    'database' => [ 
     'adapter'  => 'mysql', 
     'port'  => 1024, 
     'host'  => 'mysql', 
     'username' => 'root', 
     'password' => 'password', 
     'dbname'  => 'database', 
     'charset'  => 'utf8', 
    ], 
]); 

在這種情況下,由於某種原因,我得到一個Can't connect to MySQL server on 'mysql' (111 "Connection refused)即使我100%肯定,我可以真正連接(與PDO連接之前證明)。我也嘗試硬編碼實際的MySQL容器IP地址,但也沒有運氣。

任何想法?

+0

你見過[this](http://stackoverflow.com/questions/1420839/cant-connect-to-mysql-server-error-111)嗎?似乎相似。當您對IP地址進行硬編碼時,錯誤是否一樣? – Terminus

+0

@Terminus是的,完全相同的錯誤和事實是,它與鏈接不是同一個問題,因爲我可以在同一個PHP文件中使用PDO連接到它並從我的主機系統連接到它。 –

回答

0

所以它似乎是一種愚蠢的「錯誤」,但這裏的解決方案。 顯然,當您使用Phalcon開發人員工具來搭建項目時,它不會使用端口配置初始化數據庫,因爲它完全忽略它。您可以通過進入app/config/services.php文件並將db服務更改爲包含端口配置來輕鬆修復此問題。

$connection = new $class([ 
    'host'  => $config->database->host, 
    'port'  => $config->database->port, 
    'username' => $config->database->username, 
    'password' => $config->database->password, 
    'dbname' => $config->database->dbname, 
    'charset' => $config->database->charset 
]);