WSLのApacheからDockerで建てたデータベースに接続したい
解決したらすぐ記事書く、これ大事
やったこと
- WSLでapacheを入れて鯖を立てる
sudo apt install apache2
みたいな感じですぐ立つ
- MYSQLのコンテナ持ってきて起動する
git clone https://example.com
好きなもの持ってこよう
公式のやつがあればそれでいいんじゃないかな
自分は友人の作ったものを持ってきた
- webページを作ってDBとつなげようとする
今回はphpのmysqli_connect関数を使用することにした。
公式の関数リファレンス
$db_host = "localhost";
$db_user = "root";
$db_pass = "rootpass";
$db_name = "db_name";
$connect = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
しかし、どうしてもDBへの接続ができていないようだった
DBの名前が違うか?、user名違うか?、そもそもPHPにmysqlのモジュールが入ってないか?とか考えてた
解決
$db_host = "localhost:コンテナのport番号";
$db_user = "root";
$db_pass = "rootpass";
$db_name = "db_name";
$connect = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
接続する際にポート番号の指定をしていなかったことが原因
色々な記事を見ると$host = "localhost"
だったのでじゃあそれでいいんだと思っていたが違った
他の記事とは環境が違うことを考慮すべきだった
当然ながらdockerコンテナのport番号がデフォルト設定localhost(:3306)
ではない場合
起動する際にport番号をデフォルトに変更するか、上記のようにこっちからport指定する必要がある。
ほかは大体Dockerで完結させているでわからなかった。
なぜこんなことやったか
DockerもLinuxもなにもわからないときに
「Apache入れるだけでサーバー立てられるの神じゃん…これ使おう」
となってほかの情報を仕入れようとしなかったからです
友人のcomposeにはApacheとPHPの入ったサーバーコンテナもあったのに