エラー内容
./vender/bin/sail artisan migrate
を実行すると、なぜか
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Name or service not known
こんなエラーが出ちゃいました。
前提として、
このコマンドの前に、色々キャッシュクリアなどやっていたら
バグって、ページが表示されなくなるエラーを起こしていました。
そこで、新たなlaravelを立ち上げてmigrateしようと思っていた時に
このエラーが起きました。
原因
前状況を考えると、キャッシュクリアなどで
データベースが接続されていないのかな?と思い
./vender/bin/sail mysql match-app1
とDBを確認しようとしました。
すると
service "mysql" is not running container
と、違うエラーが発生したので。これは
データベースが接続できていないのかも。
と思い、色々dockerとDBを繋ぐ方法を実行してみたものの
上手くいかず。。。
結局これで解決した
あまりにも解決できなかったので、病みそうになっていたところ
適当に
docker-compose up -d
と打ち込んでみました。
それまでは
./vender/bin/sail up -d
でやっていたのですが。
そして、dockerを立ち上げてから
./vender/bin/sail artisan migrate
を実行してみたら、なんと上手くいきました!!
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (61.42ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (43.90ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (45.03ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (70.68ms)
Migrating: 2022_02_28_155100_create_user_lists_table
Migrated: 2022_02_28_155100_create_user_lists_table (24.82ms)
久しぶりに、この色取り取りコードが見れてよかったです。
踏み込んで考えてみる
さて、このままよかったと終わってもいいのですが
なぜ、docker-compose up -dだと上手くいって
./vender/bin/sailだと、エラーが起きてしまったのかについて考えてみます。
ここを理解するには、そもそも
composeとvenderの違いについて知る必要がありそうです。
sailスクリプトは、docker-compose.ymlファイルで定義されたDockerコンテナを操作するための便利なメソッドをCLIで提供します。
公式によると、sailコマンドはymlファイル操作用ぽいですね。
すみません。ちょっと時間かかりそうなので
また、追々理解していくとします!
とりあえず、今は終わらせることに集中していきます。