2017-12-21 6 views
1

内からDBに接続しようとしたときに、私は次のようDockerfileといくつかの問題を抱えている、「接続が拒否されました」データベースが、次のエラーを返して:ここでははドッカーコンテナ

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

は、例外が発生したコードです:

// 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() . '}'); 
    } 
}; 

誰かが問題の可能性があることを知っていますか?

ありがとうございます!

+1

は、PHPコードと同じコンテナにあるデータベースですか? –

+1

^あなたのデータベースはどこですか? –

+0

私は何も持っていません。私はコードが1つではない場合、それを作成すると思った。あなたが私に1つを含める必要があるかどうか、もしそうならばどこにどのように教えてもらえますか?ありがとうございました:) – UrmLmn

答えて

2

あなたは何かなどを使用してMySQL用ドッキングウィンドウコンテナを作成することができます...

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

その後、(linuxと仮定)

docker inspect MySQLDB | grep IPA 

IPアドレスは、接続のために使用して取得します。

+0

あなたの答えをありがとう!私はPHPの上にどういうわけかmysqlをインストールすることができるように方法がありますか?7.0-apache docker container? – UrmLmn

+2

コンテナを使用するという考えは、サービスごとに異なるコンテナを作成することです。私はPHP用に1つ、MySQL用に1つ、phpmyadmin用にもう1つ、redis用にもう1つ –

関連する問題