Laravel Sailを使うと、Dockerを使った開発環境を手軽に使えます。
ただそういわれても、一体どんな構造になっているのか、分かりにくいですよね。
そこで「Dockerについてよく知らない」という人のために、Laravel Sailの基本構造を分かりやすく解説します。
併せて、実体験を通じて感じたLaravel Sailのメリット・デメリットもお伝えします。
「Laravel Sail使ってみたいな」と思っていたら、参考にしてください。
Laravel大好きエンジニアのわたしが、実際にLaravel Sailを使った中で感じたことを正直にお伝えします。
動画編はこちら♪
Laravel Sailの基本構造を図で分かりやすく解説
まずはLaravel Sailと、基本構造から説明していきますね。
Laravel Sailとは、Dockerを使って開発環境を構築するためのコマンドラインインターフェースです。Laravel用にアレンジされたDockerコマンドを実行できます。
Dockerとは、一言でいうと、コンテナ型のアプリケーション実行環境です。
文字で書くと分かりにくいので、図にしました。Laravel SailによってDockerを使ってプロジェクトを作成すると、下図のような構造になります。
Dockerを入れると、そこに、コンテナをいくつも設置できます。
Laravelの場合には、作成したアプリケーションを実行するのに必要なMySQLやMailHog, Redisといったツールを、各コンテナで動かします。
このコンテナ情報は、プロジェクト作成時に、docker-compose.ymlファイルの中にデフォルトで書かれています。
2022年11月7日現在、下記のコンテナが使用されています。
- mysql
- redis
- meilisearch
- mailhog
- selenium
コンテナ情報を編集したり、新たにコンテナを追加したい場合には、このファイルを書き替えます。具体的な方法は、phpMyAdminを追加する方法を解説した記事をご覧ください
プロジェクトを実行する時のPHPバージョンを変更したい場合などにも、このdocker-compose.ymlファイルを編集します。具体的な方法は、下記をご覧ください。
docker-compose.ymlファイルは、Docker用のファイルです。
Laravel Sailを使わずプロジェクトを作った場合は、作成されません。
㊟Windowsの場合は基本構造が少し変わります
ちなみにWindowsの場合には、WSL環境を構築し、その中にDockerをインストールします。
図にすると、こうなります。
この後の記事でLaravel Sailのインストール方法を解説しますが、Windows編では、WSLのインストール方法から説明していきます。
Laravel Sailのメリット
基本構造についてお伝えしました。
次に、わたしが実際に感じるLaravel Sailのメリットをお伝えします。Laravel Sailのメリットというより、LaravelのプロジェクトでDockerを使うメリットとなりますが、下記の3点です。
- OSに依存せず開発環境を構築できる
- 開発環境の構築がラク
- バージョンが違うプロジェクトの管理がラク
順番に説明していきます。
① OSに依存せず開発環境を構築できる
Dockerを使う最大のメリットは、OSに依存せず、開発環境を構築できることです。
たとえばWindowsと本番環境(Unix系)では環境が異なるため、「Windowsでは動いたけど本番環境では動かない!」なんてことが起こりえます。
わたし自身、この事態に陥ったことがあります。Xampp(ザンプ)を使ってWindows環境でLaravelのプロジェクトを開発していたのですが、あるライブラリが本番環境ではうまく動かなかったのです。
Dockerを使えば、こういった悲惨な事態を防げます。
② 開発環境の構築がラク
2つ目は、開発環境の構築がラク、ということ。
Laravel Sailでプロジェクトを作ると、MySQL、PHP、Node.js など必要なものを一度に入れられます。
③ バージョンが違うプロジェクトの管理がラク
3つ目のメリットは、バージョンが違うプロジェクトの管理がラク、という点です。
Laravelは、バージョンによってPHPのバージョンも変わったりします。
たとえばLaravel6ではPHP7.2以上が必要でしたが、Laravel9ではPHP8.0以上が必要です。
こうした場合、プロジェクトを複数管理するには、各プロジェクトに必要なツールを切り替えたりせねばならず、面倒です。
たとえばXamppを使う場合には、PHPのバージョンに合わせて複数のバージョンのXamppをインストールし、プロジェクトごとに切り替える必要があります。
Laravel SailによってDockerを使えば、プロジェクトごとの環境をdocker-compose.ymlファイルで設定すればよいので、ツールを切り替える必要がありません。
Laravel Sailのデメリット
LaravelでDockerを使うメリットをお伝えしましたが、良いことばかりではありません。
デメリットもお伝えしていきますね。
わたしが感じるデメリットは、メモリの負荷が大きいことです。
また、ある程度Dockerについての知識も必要となる点。
Laravelの公式マニュアルでは、Dockerの経験がなくともLaravel Sailを使えると書いてあります。確かに経験がなくても使い始められます。ですが、Dockerについての知識は、ある程度あったほうが良いです。
Laravel Sailのコマンドは、Dockerのコマンドをアレンジしています。また、カスタマイズをする時には、先ほどお伝えしたとおりdocker-compose.ymlファイルを編集します。
つまり、Dockerの知識があればコマンド入力や、カスタマイズがしやすくなるのです。
とはいえ、最初からDockerをしっかり勉強してLaravel Sailに取り組むより、困ったときに調べていく形で良いかなと思います^^
「もしDockerをはじめて学ぶ」「基本を知っておきたい」という場合には、「図解! Dockerのツボとコツがゼッタイにわかる本」がおすすめです。
わたしもこの本を持っていますが、とても読みやすいです。フォルダとディレクトリの違いまで分かりやすく解説してあります。
Docker初心者向けに書かれてます。
カエルのイラストに癒されます。
さいごに
Laravel Sailの基本構造と、Laravel Sailのメリット・デメリットをお伝えしました。
Laravel Sailをいちから使っていきたい!と思ったら、この後の記事を読んでいってくださいね。
Laravel Sailの使い方や、アレンジ方法まで、動画も使いつつ、分かりやすく解説しています。
Windows版はこちら
Mac版はこちら