[Laravel][Docker]DBコンテナが正常に立ち上がっているのにLaravel側で接続できない場合の対処法
正常にDBコンテナは動いているのにLaravelでは接続できない!
結構この罠に引っかかる人多いんじゃないかなと思って書きました。
環境
Laravel8
docker-compose 3.8
エラー(Laravel)
SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
直接DBには接続できる
解決策
Laravelのデフォルトのdbホストが127.0.0.1になっています。
dbクライアント(tableplus)で繋がるんだから、なんかこれでいけそうな気がするんですけど、無理です。
→理屈は分からないのでわかる方教えてくだせえ!
env
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
api_project_app_1 docker-php-entrypoint php-fpm Up 0.0.0.0:19000->9000/tcp
api_project_db_1 docker-entrypoint.sh postg ... Up 0.0.0.0:5432->5432/tcp
api_project_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp
DBコンテナのホスト名をLaravelの.envに。
DB_HOST=127.0.0.1
↓
DB_HOST=api_project_db_1
これでいけます
Author And Source
この問題について([Laravel][Docker]DBコンテナが正常に立ち上がっているのにLaravel側で接続できない場合の対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/Eryushidate/items/f0c77396e9ad7f793763著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .