😇
Laravel Sailでデータベースに接続できない
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_HOST
を mysql
にしてください。
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