Laravelはしばらく見ないうちにDocker環境の構築が非常に楽になっていて驚きです。殆ど設定が楽に扱えるようになりました。docker-compose.ymlが最初から設定されているといった感じです。
Laravelのdocker環境は勿論独自に設定することも可能です。必要なミドルウエアをひとつひとつ自分でイメージを拾ってきて作成することができますが、ここではLaravel自身がすでにもっている構築方法を使って開発環境を作成します。コンポーザーを使うよりかなり楽。
https://readouble.com/laravel/8.x/ja/installation.html
example-app
で開発をすすめるときは以下のようになります。
$ curl -s "https://laravel.build/example-app" | bash
最後にこういうメッセージが出ますが、空でエンターを押してすすめてOK。
進まない場合はMacのパスワードを入力します。
Please provide your password so we can make some final adjustments to your application's permissions.
Password:
最後に
Thank you! We hope you build something incredible. Dive in with: cd edoc && ./vendor/bin/sail up
が出たら完了。
完了したらexample-appにcdして、指示通りに
cd example-app
./vendor/bin/sail up
を実行します。めっちゃ時間かかります。(数時間かかる場合もあります。)
度々この工程で終わらないという状況に陥ることがありました。そういう場合はctrl+Cで一回停止してもう一回コマンドを実行してみてください。たいていの場合成功します。終わらなくなってしまう理由はまだわかりません。
終わったら、
http://localhost/
にアクセスできます。いつものトップページが現れます。
ローカル環境でポートがかぶるとダメなので別のポートにしてあげる。80番ポート以外を使いたい場合は、docker-compose.yml
の修正を行います。
$ docker-compose ps -a | grep example-app_laravel
example-app_laravel.test_1 start-container Up 0.0.0.0:80->80/tcp,:::80->80/tcp, 8000/tcp
80ポートでえListenしていることがわかります。docker-compose.yml
を開いて12行目あたりの以下の部分を修正します。
ports:
- '${APP_PORT:-6800}:80'
dockerを再起動すると反映されます。確認します。
$ docker-compose ps -a | grep example-app_laravel
example-app_laravel.test_1 start-container Up 0.0.0.0:6800->80/tcp,:::6800->80/tcp, 8000/tcp
6800ポートに変更されました。アクセスしてみてください。http://localhost:6800/
【Docker】Laravel Sailのインストールと使い方を確認
マイグレーションを実行するとときどきDB接続エラーになることがあるので、databaseの確認をしておきます。
Laravelのデフォルトのテーブル作成は以下のコマンドで行います。6個のテーブルが作成されます。
$ ./vendor/bin/sail artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (56.76ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (128.34ms)
Migrating: 2014_10_12_200000_add_two_factor_columns_to_users_table
Migrated: 2014_10_12_200000_add_two_factor_columns_to_users_table (166.59ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (44.63ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (58.08ms)
Migrating: 2021_06_23_184749_create_sessions_table
Migrated: 2021_06_23_184749_create_sessions_table (85.47ms)
この時点でDBの接続はできていることになります。
設定情報を確認してみます。.env
の中身を確認します。sailのデフォルトでは以下のパラメータで自動的に設定されています。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=sail
DB_PASSWORD=password
dockerの立ち上げ
$ docker-compose up -d
dockerの停止
$ docker-compose stop
dockerの再起動
$ docker-compose restart
dockerの完全停止
$ docker-compose down
ローカルで起動した時点ではほぼ完璧な成績なので、開発中にちょこちょこチェックしてみるとよいと思います。