尝试从Docker容器内连接到数据库时,“连接被拒绝”

我遇到了以下Dockerfile的一些问题:

FROM php:7.0-apache RUN a2enmod rewrite RUN docker-php-ext-install pdo pdo_mysql COPY php.ini /usr/local/etc/php/ COPY . /var/www/html/ 

我正在使用Slim PHP框架并尝试连接到数据库,但返回了以下错误:

 HTTP/1.1 500 Internal Server Error Content-Type: text/html {"error": {"text": SQLSTATE[HY000] [2002] Connection refused} 

以下是引发exception的代码:

 // Instantiate a database connection $container['db'] = function ($c) { try { $db = $c['settings']['db']; $pdo = new PDO("mysql:host=" . $db['host'], $db['user'], $db['pass']); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); //Create database if not exists $dbname = "`".str_replace("`","``",$db['dbname'])."`"; $pdo->query("CREATE DATABASE IF NOT EXISTS $dbname"); $pdo->query("use $dbname"); //Create tables if not exists $pdo->query( "CREATE TABLE IF NOT EXISTS `Assets` ( `id` INT AUTO_INCREMENT NOT NULL, `first_property` varchar(50), `second_property` varchar(50), PRIMARY KEY (`id`))" ); return $pdo; } catch (PDOException $e) { return $c['response'] ->withStatus(500) ->withHeader('Content-Type', 'text/html') ->write('{"error": {"text": ' . $e->getMessage() . '}'); } }; 

有谁知道问题可能在哪里?

先谢谢你!

您可以使用类似于…创build一个MySQL的docker容器…

 docker run --name MySQLDB -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpwd -d mysql:5.7 

然后(假设linux)

 docker inspect MySQLDB | grep IPA 

获取用于连接的IP地址。