Dockerでローカルのデータベースに接続したい。

前提

Dockerで環境を作り、その中にLaravelのアプリケーションを作りたいです。
ただデータベースはローカルのmysql使おうかなと思いました。

まず以下サイトを参考に、Dockerを立ち上げて、laravelプロジェクトを作りました。
ただ、docker-composer.ymlからDBの項目は消しました。

https://www.torat.jp/laravel-docker-lemp/

そしてlaravelの.envファイルのデータベースのDBの箇所を変えました。

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user DB_PASSWORD=password

それからモデルを作り、
tinkerでデータベースにデータを追加などしてみましたが特に問題はありませんでした。

問題は、コントローラーを作ってviewでデータベースの内容を表示させようとしたときに、エラーが出ました。

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

色々と調べて、laravelの.envファイルのDB_HOSTを変えました。
これでエラーは消えました。

DB_CONNECTION=mysql DB_HOST=gateway.docker.internal DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user DB_PASSWORD=password

ところが、これでtinkerを使おうとすると、
またさっきのエラーが出ます。

DB_HOST=127.0.0.1
に戻すとtinkerは使えますが、viewでエラーが出ます。

DB_HOST=gateway.docker.internal
にするとviewは治りますが、tinkerでエラーが出ます。

どうしてこんなことが起こるのでしょうか?

Dockerもサーバーも詳しくないため理由もよくわかりません。
どなたかご教授お願いいたします。

コメントを投稿

0 コメント