前提
laravel9、docker、Mysqlで環境構築を行い、DBの接続を確認するため
「php artisan migrate」を行ったところ、
「php_network_getaddresses: getaddrinfo for db failed: nodename nor servname provided, or not known」のエラーが出てしまいmigrateが出来ない状態です。
発生している問題・エラーメッセージ
Illuminate\Database\QueryException SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = sample_db and table_name = migrations and table_type = 'BASE TABLE') at vendor/laravel/framework/src/Illuminate/Database/Connection.php:760 756▕ // If an exception occurs when attempting to run a query, we'll format the error 757▕ // message to include the bindings with SQL, which will make this exception a 758▕ // lot more helpful to the developer instead of just the database's errors. 759▕ catch (Exception $e) { ➜ 760▕ throw new QueryException( 761▕ $query, $this->prepareBindings($bindings), $e 762▕ ); 763▕ } 764▕ } +39 vendor frames 40 artisan:35 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
該当のソースコード
.env (laravel内)
DB_CONNECTION=mysql # mysqlコンテナのサービス名(✖︎container_name) DB_HOST=db DB_PORT=3306 # ymlファイルのMYSQL_DATABASEと合わせる DB_DATABASE=sample_db DB_USERNAME=root DB_PASSWORD=root
docker-compose.yml
db: image: mysql:latest container_name: db environment: MYSQL_ROOT_PASSWORD: root # .envファイルの「DB_DATABASE」とMYSQL_DATABASEを合わせる MYSQL_DATABASE: sample_db TZ: "Asia/Tokyo" # 文字コード指定 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci volumes: - ./docker/db/data:/var/lib/mysql - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf - ./docker/db/sql:/docker-entrypoint-initdb.d ports: - "3306:3306"
試したこと
エラー修正のために
・envファイルのdbホスト名を「localhost」「127.0.0.1」「mysql」に変更。
・DNS サーバーが正常に動作しているか確認済
・ホスト名を IP アドレスに変更済

回答1件
あなたの回答
tips
プレビュー