ローカル上のアプリケーションからDockerコンテナ内にあるMySQLサーバに接続する箇所でエラーが発生していました。
そこでターミナルから直接MySQLサーバに接続できるか確認してみます。
$ mysql -u root -h 127.0.0.1 --port 23456 devdb ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
むむ、どうやら繋がらない模様。
このエラーの解決策をググってみると、「アクセス許可」がどうやらポイントになっているという記事がいくつか見つかりました。
qiita.com
next49.hatenadiary.jp
しかしながら、いずれの対応をしても解決しませんでした。
上記の記事は、外部サーバーの時であり、今回はDockerコンテナ上だったので改めて原因を調査し直すことにしました。
そもそもコンテナ上に接続したいDBが立ち上がっているのか確認してみます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e7135ec79c9 redis:2.8 "docker-entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:26379->6379/tcp devkvs 4981e5395dc3 mariadb:10.0 "docker-entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:23307->3306/tcp devdb_ut
むむ、接続先のdevdbが無い。
どうやら何らかの理由で立ち上がっていなかったので手動で立ち上げてみます。
$ docker-compose start db Starting db ... done
立ち上がっているか再度確認。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e7135ec79c9 redis:2.8 "docker-entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:26379->6379/tcp devkvs 5788483bbefa mariadb:10.0 "docker-entrypoint.sh" About an hour ago Up 28 seconds 0.0.0.0:23306->3306/tcp devdb 4981e5395dc3 mariadb:10.0 "docker-entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:23307->3306/tcp devdb_ut
devdbがリストにあるので立ち上がりました。
再度、ターミナルから接続し直してみます。
$ mysql -u root -h 127.0.0.1 --port 23456 devdb -p Enter password: mysql>
無事に繋がりました。
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: 阿佐志保,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/20
- メディア: 大型本
- この商品を含むブログ (3件) を見る
Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/26
- メディア: 大型本
- この商品を含むブログ (2件) を見る