Docker容器连接到主机MySQL

我沿着一个docker教程,使用MySQL的容器。 这工作,但我想连接到我的主机的MySQL从一个PHP / Apache的容器。

我创build了一个名为'weather'的数据库,一个用户'admin'@'%',并授予用户天气数据库的所有权限。 我也创build了必要的表/列。

但是,我不断收到以下消息:

警告:mysqli :: __ construct():(HY000 / 2002):第15行中的/var/www/html/index.php连接被拒绝连接到MySQL失败:连接被拒绝

这是容器内的php应用程序连接失败的地方:

<?php require 'vendor/autoload.php'; // Create a new Container $container = new \Slim\Container([ // Add Guzzle as 'http' 'http' => function () { return new GuzzleHttp\Client(); }, // Add mysqli as 'mysql' 'mysql' => function () { $mysqli = new mysqli( getenv('DATABASE_HOST'), getenv('DATABASE_USER'), getenv('DATABASE_PASSWORD'), getenv('DATABASE_NAME') ); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: " . $mysqli->connect_error; exit; } else { return $mysqli; } }, ]); 

我用composer安装了所有的依赖项,并在my.cnf中绑定了主机的IP地址(172.17.0.1)。 以下是我正在运行的docker命令:

 docker run -d --rm --name=weather-app -p 38000:80 -v \ $(pwd):/var/www/html \ -e DATABASE_HOST='172.17.0.1' \ -e DATABASE_USER='admin' \ -e DATABASE_PASSWORD='password' \ -e DATABASE_NAME='weather' \ shiphp/weather-app 

这是git repo,如果需要更多的信息: https : //github.com/shiphp/weather-app 。

提前致谢。

编辑:

我想清楚发生了什么事。 当我绑定地址时,我忘了在my.cnf中添加[mysqld]头。 它现在有效。