はじめに
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画面が表示できれば環境構築完了です!
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アプリケーションの開発に取り掛かれることは、すごいメリットですよね!