所以我有3个docker容器,一个用PHP + PhalconPHP,一个用MySQL,另一个用webserver。现在在我的主机系统上,我可以连接到docker容器中的MySQL,我也可以使用以下代码连接PDO
new PDO('mysql:host=mysql;port=1024;dbname=database', 'root', 'password');
但由于某种原因,phalcon框架无法使用config.php
文件连接到MySQL数据库,如此
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 :(得分:1)
所以这似乎是一种愚蠢的错误"但这是解决方案。
显然,当您使用Phalcon Developer Tools来构建项目时,它不会使用端口配置初始化数据库,因为它完全忽略它。您可以通过进入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
]);