開発環境
CentOS6.9
PHP5.6
apache2.2.15
MySQL5.6
問題
とりあえずDockerの環境を作ってCakePHPをインストールした、あとは設定だ!という場面で、
SQLSTATE[HY000][2002] No such file or directory
上の図の様なエラーが出てくることがあります。 エラー文をググると、
app/Config/batabase.php
'host' => 'localhost' を '127.0.0.1'
に変更しろとありますね。 でも直らない!ってときの対策です。
対策: MySQLコンテナのIPを調べる
まず、作業コンテナからDBコンテナにはアクセスするには、DBコンテナのIPアドレスがわかっていないといけません。 まずIPアドレスを調べましょう。
# mysqlコンテナにログインする
$ docker exec -it (mysqlコンテナ名) /bin/bash
# IPアドレスを表示
$ cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.21.0.2 371725c16aa6
と出ます。 ここでいうと
371725c16aa
がDBコンテナのidなので、172.21.0.2
がそのコンテナのIPアドレスとなります。
app/Config/batabase.php
'host' => '172.21.0.2'
データベースと接続できたみたいです。やったぜ。
これでもまだ接続できないよ〜><って方は、
php.ini の設定や、 php-mysql モジュールがインストールされていない場合がありますので調べてみてください。