Help us understand the problem. What is going on with this article?

docker内にてマイグレーション時にエラーが出て詰まった話 PHP laravel

docker内にてマイグレーション時にエラーが出て詰まった話 (laravel)

以下エラー内容です

terminal
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = db_name and table_name = migrations and table_type = 'BASE TABLE')

  at /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll format the error
    666|         // message to include the bindings with SQL, which will make this exception a
    667|         // lot more helpful to the developer instead of just the database's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673|

  Exception trace:

  1   PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known")
      /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=mysql;port=3306;dbname=db_name", "db_user", "db_password", [])
      /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

結論としてdocker-compose.ymlと.envのmysqlの設定は一緒じゃないとだめらしい

解決策

laravel(app/)配下の.envがあっているかどうか確認 ->ホスト名に関してはdockerのコンテナ名と合わせる必要がある
docker-compose.ymlの内容に相違がある場合変更する必要性アリ
変更後は  

docker
docker-compose stop
docker-compose up -d

を行う必要があるとのこと
理由:restartだとdocker-compose.ymlの設定が反映されないため
.envをの設定を反映させる場合は

terminal
php artisan config:cache

で反映させる必要がある

原因(追記)

どうやらlaravelがbiludされているappコンテナ-->mysqlがビルドされているdbコンテナ
同士の通信時にエラーが発生しているらしくて,
dockerのコンテナ同士の通信時にはmysqlがビルドされているコンテナにふられたIPアドレスを
使用する必要があるとのこと

terminal
cat /etc/hosts | awk ‘END{print $1}’ | sed -r -e ‘s/[0-9]+$/1/g’

でコンテナのIPアドレスを確認できます
app配下の.envのホストIPがいっしょかどうか確認したほうがいいでしょう

mutturiprin
自分用のメモ書きです
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away