【PHP/Laravel】Laravel Sail を使用したLaravel 開発の環境構築

PHP / Laravel

Laravel SailLaravel 開発環境 構築 したいんだけど、どうすれば良いのかな?

今回は、PHPWebアプリケーションを開発するためのフレームワーク である Laravel開発環境 について、Laravel 公式Docker環境 である Laravel Sail を利用して 環境構築 する方法をご紹介します。

Laravel とは?

Laravel とは 2011年に登場したPHPのフレームワーク のことで、フレームワーク とは、Webアプリケーションを開発する際に必要となる基本的な機能や構造があらかじめ用意された設計図(テンプレート)のようなものです。

Laravel を利用することで、開発者は一から仕組みを作る必要がなくなり、初心者でも効率よく保守性の高いWebアプリケーションを開発すること ができます。

Laravel には、初心者でも開発しやすい 次のような 特徴 があります。

Laravel の特徴

  • 書きやすく読みやすいコード(Readable / Expressive)
    コードが直感的で理解しやすく、初心者でも学びやすい設計 になっています。
  • モダンな設計思想
    MVCアーキテクチャ など、現在のWeb開発でよく使われる設計パターンが採用 されています。
  • 便利な機能が最初から用意されている
    ルーティング(URLと処理の対応付け)認証機能(ログイン機能)データベース操作(ORM / マイグレーション)など、Webアプリ開発に必要な機能が標準 で備わっています。

なぜLaravel Sailを使うのか?

Laravel で開発を始める には、次のような 開発環境を準備する必要 があります。

  • PHP
  • Composer
  • データベース(MySQLなど)
  • Node.js
  • その他のツール

これらを 自分のPCに個別にインストールして設定する のは、初心者にとって少しハードルが高い ため、そこで便利なのが Laravel Sail です。
Laravel Sail は、Docker を利用して Laravel開発環境を簡単に構築できる公式の開発ツール です。

Laravel Sail とは?

Laravel Sail とは、Docker を利用して Laravel開発環境を簡単に構築できるLaravel公式の開発環境ツール です。

通常、Laravel開発環境を構築する場合 は、PHPComposerMySQLNode.js などの ソフトウェアを自分のPCにインストールして設定する必要 があります。

Laravel Sail を利用すると、これらのソフトウェアを Dockerコンテナ として まとめて管理すること ができるため、複雑な環境設定を行わなくても、コマンドを実行するだけで Laravel の開発環境を簡単に起動する ことができます。

また、Docker を利用しているため、開発環境をコンテナとして管理する ことができ、チーム開発でも同じ環境を簡単に共有する ことができます。

事前準備

Laravel Sail は、Docker を利用して Laravel開発環境を構築する ため、事前に Dockerをインストールしておく必要 があります。

Dockerインストール がまだの場合は、下記より インストール を行なってください。

Laravel プロジェクトの作成

事前準備が完了 したら、Laravel Sail を使って新しい Laravelプロジェクト を作成します。

以下のコマンドをターミナルで実行 すると、Laravelプロジェクト を作成できます。

  • study-laravel-app の部分は、作成したいプロジェクト名に置き換えて ください。
  • コマンド は、プロジェクトを作成したいディレクトリで実行 してください。

コマンドを実行 すると、次のようなものが自動で作成 されます。

  • Laravelアプリケーションのディレクトリ
  • Laravel Sailの設定ファイル
  • Docker環境設定ファイルdocker-compose.yml など)

プロジェクトの作成が完了 したら、プロジェクトディレクトリに移動 します。

Laravel Sail の起動

プロジェクトディレクトリに移動 したら、Laravel Sail を使って 開発環境を起動 します。

  • 初回はDockerイメージのダウンロードが行われる ため、少し時間がかかります
  • -d (デタッチドモード)オプション を付けると バックグラウンドで起動する ことができます。※ デタッチドモード: ターミナルが占有されず、別ターミナルでコマンドを打つ必要が無くなる

エラーが表示される場合

Laravel Sail起動した際に発生する主なエラーとその対処方法 を、下記にまとめて紹介します。

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: address already in use

エラー原因
Dockerホストのポート80を使おう としたが、すでに 別のプロセスがそのポートを使用しているため、1つのポートは同時に1プロセスしか使えず、エラーが発生してしまった

解決方法macOS の場合

ポート80を使っているプロセスを確認

プロセスを終了させる方法

A) プロセス名に一致するプロセスを全部終了

B) PIDを指定して強制終了

Illuminate\Database\QueryException [42S02]: Base table or view not found: 1146 Table ‘laravel.sessions’ doesn’t exist

エラー原因
このエラーは、.env ファイルにて、SESSION_DRIVER=database が指定されている状態 で、セッション情報を sessions テーブルに保存しようとした 際に、sessions テーブルが存在しない ためエラーが発生 します。

解決方法
Laravel のマイグレーションを実行する ことでsessions テーブルを含む必要なデータベースのテーブルが作成 されます。

Laravel アプリをブラウザで確認

Laravel Sail が無事に起動したら、ブラウザで以下のURLにアクセスして、Laravel の初期画面が表示されるか確認し表示されれば、Laravelプロジェクトの作成Laravel Sailによる環境構築は完了です。

Laravel Sail の構成イメージ(図解)と 各サービスのポート・役割一覧表

Laravel Sail構成イメージ図 と、各サービスのポート番号および役割をまとめた一覧 になります。

構成イメージ(図解)

各サービスのポート・役割一覧表

サービスポート役割
Laravel (PHP + Nginx + Vite)80 / 5173Webサーバー + PHP実行 + Vite開発サーバー
MySQL3306データベース、sessions テーブル作成
Redis6379キャッシュ、ジョブキュー
Meilisearch7700高速検索、全文検索
Mailpit1025 / 8025開発用メール受信(SMTP / Web UI)
SeleniumE2Eテスト用ブラウザ

Laravel Sail よく使うコマンド一覧

Laravel Sail を使った開発で、よく使用する便利なコマンドを紹介 します。

まとめ

今回は、Laravel Sail を利用して、Laravel の開発環境を構築する方法を紹介しましたが、いかがでしたでしょうか?

Laravel Sail を利用することで、Docker を使った Laravel開発環境を簡単に構築すること ができます。
特に初心者の場合は、PHPデータベースなどの環境構築を個別に行う必要がない ため、Laravel の開発をスムーズに始めることができます。

ぜひ Laravel Sail を活用して、Laravel開発環境を構築 して、Webアプリケーションの開発 を進めていきましょう。

公式サイト

Laravel 12 Laravel Sail

12.x Laravel Sail Laravel

Sailで使用するDockerのインストール

11.x インストール Laravel
tachu × tachu

Laravel / React フルスタックエンジニア

Webエンジニア歴15年、フリーランス歴8年で、PHP / Laravel を中心に、
React.js / Vue.js を用いたフルスタックでのWeb開発をしています。

技術記事は Laravel / React / Web開発 を中心に書いています。

Webサービスの開発、既存システム改善、機能追加、技術相談、小規模な開発など、お気軽にご相談ください。

PHP / Laravel
シェアする

コメント

タイトルとURLをコピーしました