Laravel Sail とは、Laravel 8 から追加された公式パッケージで、Docker を意識せずに Docker 環境を構築できるパケージです。
今回はその Laravel Sail を使って、 Docker の開発環境を作ってみたいと思います。
macOS Big Sur 11.6
PHP 8.0.8
Laravel 8.79.0
composer 2.2.4
プロジェクト名は sail-test にします。
composer create-project laravel/laravel sail-test
作成が完了したら、プロジェクト内に移動します。
cd sail-test
最新の Laravel では Sail 自体はすでに入っているので、インストールの必要はありません。
既存のプロジェクトにインストールする際はコマンド実行します。
composer require laravel/sail --dev
Sail のインストールが終わったら、起動に必要な docker-compose.yml を作成するためにコマンドを実行します。
// docker-compose.yml を作成する為のコマンド
php artisan sail:install
コマンドを実行すると必要なサービスを選んで docker-compose.yml を作成することができます。
画像の例では、データベースに MySQL と redis、memcahed、minio、mailhog を選択しています。

docker-compose.yml が作成されたらコンテナを起動していきます。
// コンテナ起動
./vendor/bin/sail up -d

初期値のままであれば localhost:80 にアクセスすると Laravel のスタートページが表示できました。

MailHog もちゃんと使えます。

sail コマンドを打つ際に、いちいち ./vendor/bin/sail を打つのがしんどい場合は、エイリアスを登録しておくと便利です。以下のコマンドコピペで設定できます。
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
コンテナの中に入るとき
sail shell
テストを実行する時も sail コマンドを使用ます。
sail test
コンテナ停止
sail stop
今までは Laravel の起動には php artisan serve コマンドを使用していましたが、Sail今後は Docker を使っていきたいと思います。
このほかにも sail コマンドはあるので、今後使用していったらまたまとめたいと思います。