😇

Laravel Sailでデータベースに接続できない

2021/05/25に公開

TL;DR

今まで、Laravelは公式の開発環境を提供してきませんでした。
しかし、Laravel SailというDockerの開発環境を提供しました 🚀

今回は、Laravel Sailを使ってみたが、データベースに接続できなかった場合の解決方法を解説します。


新規アプリケーションの作成を行いたい人はこちらの記事を参考にしてください。

流れはこう

Laravel Sailに関するドキュメントはこちらで確認することができます。

$ composer require laravel/sail --dev
$ php artisan sail:install
$ ./vendor/bin/sail up

ただ、この時に重要な点として、MySQLは .env ファイルに書かれている環境変数を元にビルドされるので、 .env ファイルとそれぞれの環境変数をセットしなければなりません。

環境変数を元にMySQLで使用されるものは、以下の三点になります。
以下三点はユーザが任意で決めるものとなります。

  • データベース名
  • データベースのユーザ名
  • データベースのパスワード

また、MySQLインスタンスに接続する際は、DB_HOSTmysql にしてください。

Once you have started your containers, you may connect to the MySQL instance within your application by setting your DB_HOST environment variable within your application's .env file to mysql.

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=sail
DB_PASSWORD=password

.envを修正しないままビルドした場合

.envファイルで環境変数を適切にいれないまま、sailをビルドしてしまっては、あとから環境変数を変えても接続できません。その場合は、以下のコマンドを実行し、再度ビルドし直してください。

docker compose down --rmi all --volumes --remove-orphans &&
./vendor/bin/sail build --no-cache &&
./vendor/bin/sail up -d &&
./vendor/bin/sail artisan migrate

Discussion