laravel-sail

Laravel Sailを使ってLaravelのDocker開発環境を構築してみよう

先日、LTSバージョンのLaravel 9がリリースされたので、早速Laravelの開発環境を構築してみました。今回はLaravel Sailを利用することで、とても簡単にLaravelのDockerによる開発環境を構築しました。

Laravel SailはWindows(WSL2), macOS, Linuxに対応しており、一般的な環境であれば利用可能です。

docker-compose.ymlを取得

初めに下記のコマンドでLaravelの環境を構築するためのdocker-compose.ymlを取得します。(example-appの部分はアプリケーションの名前となり任意の名前に変更可能です。)

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

上記のコマンドでは、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-black-color">mysql</mark>redismeilisearchmailhogseleniumが利用できる環境を構築するdocker-compose.ymlが取得することができます。利用できるサービスを指定する場合はwithパラメータをつけて下記のようにします。

curl -s "https://laravel.build/example-app?with=mysql,redis" | bash

この時に指定できるサービスはmysqlpgsqlmariadbredismemcachedmeilisearchminioseleniummailhogから選ぶことができます。複数のサービスを含める場合は例のようにカンマ区切りで列挙します。

取得したdocker-compose.ymlからDocker環境構築

docker-compose.yml取得後は次のコマンドを実行することで、Docker環境構築が完了します。(example-appの部分は指定したアプリケーション名になります。)

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

このコマンドが無事に完了した後にブラウザからhttp://localhostにアクセスしてみましょう。無事に環境構築することができました!

(補足)Laravel Sailコマンド

環境構築後はsailコマンドを利用することで、コンテナ内を簡単に操作できることができます。

はじめにsailコマンドのエイリアス設定

先ほどコンテナを立ち上げたときのように、sailコマンドは./vendor/bin/sailで利用できるのですが、頻繁に使う場合に入力が面倒なので、sailだけで実行できるようにエイリアス設定しましょう。

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

コンテナの開始、停止

Dockerコンテナの開始や停止もsailコマンドから行います。docker利用するときとコマンドは似ていて次のようにします。

sail up # 開始 
sail up -d # バックグランドで開始
sail stop # 停止

PHP, Composer, Artisanの操作

最初にsailをつけることで、コンテナ内のPHPやComposer, Artisanを実行することできます。下記は実行例です。

sail php -v
sail composer install
sail artisan tinker

node, npm, yarnの操作

PHP関連のコマンドだけでなくJavascript用のnode, npm, yarnもsailコマンドを利用することで操作することができます。

sail node --version
sail npm run prod
sail yarn install

まとめ

Laravel5.xの頃は、vagrantやvirtualboxを使って開発環境を作るのに時間をかけてようやく構築していた記憶がありますが、今はDockerやSailコマンドを使って簡単に環境構築できるようになりました。アプリケーション開発に集中できるようになるのは素敵ですね!