Laravel Sail+DockerでWebアプリを作成する

LaravelはPHPのフルスタックWebフレームワークの中で最も有名なものの1つで日本では特に人気があります。通常Webアプリを開発する場合、環境構築は骨の折れる作業となりますが、Laravelでは「Laravel Sail」という仕組みを利用することによりほぼ自動的に開発環境が出来上がります。

この記事ではWindowsでLaravelの開発を行う手順を紹介し、ブラウザでWebアプリの初期画面を表示できるところまでを紹介します。

この記事でわかること

  • Laravel Sailの概要
  • Laravelを利用するための環境構築
  • Laravelプロジェクトの作成方法

事前準備

Laravelは簡単に開発環境を作る仕組みとして「Laravel Sail」というソリューションを提供しています。Laravelで実際にWebアプリを作成する前にLaravel Sailについてちょっとだけ解説します。

Laravel Sailとは

Laravel SailとはDockerを利用してLaravelの開発環境の構築およびLaravelを実行するためのソリューション(仕組み)です。Laravel Sailを利用することで開発者は煩わしい開発環境の構築を行う必要がなくなり、本質であるLaravelアプリの開発に集中することができます。(実際はLaravel Sailはdocker-compose.ymlに定義されているDockerコンテナを操作するための便利なスクリプトです。)

Laravel SailはDockerの利用が前提となっているため、あらかじめDockerをインストールしておく必要があります。また、Windowsの場合はDockerのバックエンドとしてWSL2を導入しておく必要もあります。WSL2およびDockerの導入に関しては以下の記事をご参照ください。

参考記事

Laravelプロジェクトの作成

WSL2およびDocker(Docker Desktop for Windows)のインストールが完了したら早速Laravelプロジェクトを作成します。

Linuxの起動

Laravelプロジェクトを作成するためにLinuxを立ち上げます。スタートメニューからインストール済みのLinuxを選択しターミナルを開きます。

Ubuntuの場合は後続の手順で必要となるcurlコマンドがあらかじめインストールされているため問題ありませんが、他のディストリビューションの場合はcurlがインストールされていない可能性がありますのでここでインストールしておきます。ここではDebianを例にcurlをインストールしてみます。(お使いのディストリビューション毎にインストール方法は異なりますのでご確認ください。)

bash
sudo apt update && sudo apt install -y curl

Laravelプロジェクトの作成

立ち上げたLinuxのターミナルで任意のディレクトリに移動します。移動後に次のコマンドを入力するとそのディレクトリ内にLaravelプロジェクトが作成されます。なお、”example-app”の部分は好きなように変更可能です。”example-app”と指定した場合はexample-appというディレクトリが作成され、必要なファイルが展開されます。

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

デフォルトではSailで利用するサービスとしてmysqlredismeilisearchmailhogseleniumが選択されdocker-compose.ymlに書き込まれますが、これらは任意に選択が可能です。上記のプロジェクト作成コマンドのディレクトリ名の指定の後に?with=[サービス名][,サービス名]と記載すればSailで利用するアプリケーションを指定できます。例としてmariadbのみを選択してプロジェクトを作成するコマンドを以下に示します。

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

最新版のLaravel(9.x)では以下のサービスが指定できます。

mysql、pgsql、mariadb、redis、memcached、meilisearch、minio、selenium、mailhog

Laravelプロジェクトの実行

作成したプロジェクトを実際に立ち上げてみます。Linuxターミナルで作成したプロジェクトのディレクトリに移動し、./vendor/bin/sail up -dとタイプします。

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

初回起動時はDockerコンテナのイメージ取得とビルドが行われるため立ち上がりに結構時間がかかりますが、一度コンテナが作成されれば次回以降の起動に時間はかかりません。お茶でも飲んで立ち上がるのを待ちましょう。

SailのPATHの設定

sailを利用する際に毎回./vendor/bin/sailと入力するのは面倒なのでbashエイリアスを作成します。

任意のエディタで~/.bashrcファイルを開き、末尾に以下を追加します。

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

一度Linuxターミナルを閉じて開きなおすことでsailと打つだけでsailを利用できるようになります。

なお、このブログではVisual Studio Codeを利用して開発を行っていきます。Laravelの開発で利用できるようにVisual Studio Codeをインストールする方法は以下の記事をご参照ください。

Visual Studio Codeでリモート開発を行う Visual Studio Codeでリモート開発を行う

Webブラウザで確認

sail up -dコマンドでプロジェクトを立ち上げたら正常に導入が完了したか確認してみましょう。

お好きなブラウザでhttp://localhostにアクセスしてWelcome画面が表示されれば正しくプロジェクトが作成されています。お疲れさまでした。

Laravelプロジェクト作成直後のWelcome画面

まとめ

長々と書いてきましたが、WSL2とDocker Desktopの導入さえ済んでしまえばLaravel Sailの力を借りて簡単に開発環境、実行環境を作れるのでとても便利ですね。筆者はサラリーマン時代にStrutsフレームワークから入ったのですが、その頃の環境構築と比べると隔世の感があります。

以上になります。それではまた!