Laravel Sailで開発環境を構築してみた!

はじめに

Looopでは、Laravelを使った開発プロジェクトがいくつもあり、開発したアプリケーションをAWS上で運用しています。
最近ではECS on Fargateを使って運用していることもあり、Dockerで開発環境を構築する必要がありました。
今回は、Dockerを使ったLaravel開発環境を手っ取り早く構築する方法をご紹介したいと思います!

Laravel Sailとは

Laravelは通常LAMPやLEMPと呼ばれる環境を用意して実行します。
また、それらをDocker上で構築するにはDockerの知識が必要ですし、MySQL、Redisなどの各種サービスを設定していくには結構な手間がかかります。
Laravel Sailは、Dockerを使ったLaravel開発環境の構築や実行を簡易に行うための便利なコマンドラインツールです。
ようするに、Dockerの知識がなくても、めっちゃ簡単にLaravel開発環境構築ができちゃうツールってことです!

環境

MacBook Pro (M2)
macOS Ventura : バージョン 13.6.7

事前準備

Dockerを使うので、Docker Desktopアプリをインストールします。
インストールが終わったら、Docker Desktopアプリを開き、Docker Engineを起動しておきます。

Laravel Sailで環境構築してみる!

Laravelプロジェクトの作成

Terminalアプリを開き、適当な作業ディレクトリに移動します。
下記の例ではlaravelsailディレクトリを作業ディレクトリとしています。

mkdir ~/laravelsail
cd ~/laravelsail 

次のコマンドでLaravelプロジェクトを作成します。 curlコマンドでLaravel Sailのビルドスクリプトを取得して、Zshシェルに渡しています。
example-appの部分はプロジェクト名になるので好きな名前に変えちゃってOKです!
実行には時間がかかるので、コーヒーでも淹れて、ゆっくり待ちましょう。

curl -s "https://laravel.build/example-app" | zsh 

最後にローカル環境の管理者パスワードを入力します。

Please provide your password so we can make some final adjustments to your application's permissions.

Password:

下記のメッセージが表示されればプロジェクトの作成は完了です!
example-appディレクトリにLaravelプロジェクトが作成されているはずです。

Thank you! We hope you build something incredible. Dive in with: cd example-app && ./vendor/bin/sail up

Laravelプロジェクトの実行

example-appディレクトリに移動して、sail upでコンテナを起動します。
sail up -dとすることで、バックグラウンドで起動することもできます。

cd example-app
./vendor/bin/sail up

コンテナが起動したら、別のTerminalを立ち上げ、migrateを実行します。
データベースにLaravel実行時に必要なテーブルが作成されます。

cd ~/laravelsail/example-app
./vendor/bin/sail artisan migrate

ブラウザで http://localhost にアクセスして、次のようなLaravel Top画面が表示できれば環境構築完了です!

Laravel Top画面

Tips

PHPのバージョンや利用するサービスの指定

プロジェクト作成時のURLにパラメーター指定することで、PHPのバージョンや利用するサービスを変更できます。
下記の例ではPHPのバージョンを8.1に、データベースをPostgreSQLに指定しています。

curl -s "https://laravel.build/example-app?php=81&with=pgsql" | zsh
  • php
    省略するとLaravel Sailが対応する最新バージョンを指定したことになる。

  • with
    省略すると mysql, redis, meilisearch, mailpit, selenium を指定したことになる。

ちなみにLaravelプロジェクト作成時のURLをブラウザで開くと、Laravel Sailのビルドスクリプトが確認できます。
phpパラメーターはlaravelsail/phpXX-composerコンテナイメージ指定箇所のXXに設定されます。
74, 80, 81, 82 or 83 が設定可能です。
withパラメーターはsail:installコマンドに渡すwithパラメーターに設定されます。
./vendor/laravel/sail/src/Console/ConcernsディレクトリにあるInteractsWithDockerComposeServices.phpを見ると設定可能な値がわかります。

<?php

// 一部抜粋
protected $services = [
    'mysql',
    'pgsql',
    'mariadb10',
    'mariadb11',
    'redis',
    'memcached',
    'meilisearch',
    'typesense',
    'minio',
    'mailpit',
    'selenium',
    'soketi',
];

sailコマンドの短縮

./vendor/bin/sailと毎回入力するのが煩わしい方はエイリアスを登録することでsailに短縮することができます。

echo "alias sail='sh \$([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc
source ~/.zshrc

おわりに

Laravel Sailを使うことで環境構築がすごく簡単にできました!
ただ、注意点としてLaravel Sailはビルトインサーバーで起動しているので、そのまま本番環境で運用することは推奨されておりません。
あくまで開発環境を簡単に構築、実行するためのツールなので、本番運用するには設定を変更する必要があり、Dockerの知識が不可欠です。
とはいえ、環境構築の敷居が低くなって素早くLaravelアプリケーションの開発に取り掛かれることは、すごいメリットですよね!