dockerで構築したlaravel環境で、マイグレーションエラーしたら下記のようなエラーが出た。
php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
「php_network_getaddresses: getaddrinfo failed」から始まるエラーは、
ホストの設定や名前解決でエラーが発生していることを示すエラーらしい。
今回は上記エラーの原因と解決策を紹介する。
原因:phpコンテナ内でマイグレーションしていなかった
「php_network_getaddresses: getaddrinfo failed」のエラーが起きていた原因は、
マイグレーションをコンテナ内で実行していなかったからだった。
自分がマイグレーションを実行していたのは、ローカルの環境だった。
解決策:コンテナ内でマイグレーションする
「php_network_getaddresses: getaddrinfo failed」のエラーを解決するには、
マイグレーションをコンテナ内で実行すれば良い。
下記は一例となるが、マイグレーションをコンテナ内で実行する手順だ。
#phpコンテナに入る
docker-compose exec php bash
#laravelアプリケーションのディレクトリへ移動
cd laravelアプリケーションのディレクトリ
# マイグレーション実行
php artisan migration
参考までに、dockerコマンドの使い方をまとめた記事を紹介しておく。
それでもマイグレーションできない場合
上記の対処方法でもマイグレーションできない場合は、
下記のパターンに当てはまっていないか要確認だ。
①laravelからのDB接続設定が誤っていないか
そもそも、laravelからコンテナのDB(MySQL)への接続設定が間違っている可能性がある。
laravelがDBへの接続をするための設定を書くのは/.envファイル。

DB_HOSTには、docker-composeに記載してある、mysqlのサービス名を記載する。
DB_DATABASEには、接続したいDBの名前を記載する。
②その他
または筆者の場合、下記のようなエラーも出たので、参考に。
ドライバーが存在しない時に起きるエラー。
「php_network_getaddresses: getaddrinfo failed」が出る時の原因と対処法まとめ
「php_network_getaddresses: getaddrinfo failed」のエラーが起きる原因は、
マイグレーションをコンテナ内で実行していなかったから。
「php_network_getaddresses: getaddrinfo failed」のエラーを解決するには、
マイグレーションをコンテナ内で実行すれば良い。
コメントを残す