Laravel Sail で Laravel の 開発環境 を 構築 したいんだけど、どうすれば良いのかな?
今回は、PHP で Webアプリケーションを開発するためのフレームワーク である 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 の 開発環境を構築する場合 は、PHP や Composer、MySQL、Node.js などの ソフトウェアを自分のPCにインストールして設定する必要 があります。
Laravel Sail を利用すると、これらのソフトウェアを Dockerコンテナ として まとめて管理すること ができるため、複雑な環境設定を行わなくても、コマンドを実行するだけで Laravel の開発環境を簡単に起動する ことができます。
また、Docker を利用しているため、開発環境をコンテナとして管理する ことができ、チーム開発でも同じ環境を簡単に共有する ことができます。
事前準備
Laravel Sail は、Docker を利用して Laravel の 開発環境を構築する ため、事前に Dockerをインストールしておく必要 があります。
※ Docker の インストール がまだの場合は、下記より インストール を行なってください。
Laravel プロジェクトの作成
事前準備が完了 したら、Laravel Sail を使って新しい Laravelプロジェクト を作成します。
以下のコマンドをターミナルで実行 すると、Laravelプロジェクト を作成できます。
study-laravel-appの部分は、作成したいプロジェクト名に置き換えて ください。- コマンド は、プロジェクトを作成したいディレクトリで実行 してください。
curl -s https://laravel.build/study-laravel-app | bash
コマンドを実行 すると、次のようなものが自動で作成 されます。
- Laravelアプリケーションのディレクトリ
- Laravel Sailの設定ファイル
- Docker環境設定ファイル(docker-compose.yml など)
プロジェクトの作成が完了 したら、プロジェクトディレクトリに移動 します。
cd study-laravel-app
Laravel Sail の起動
プロジェクトディレクトリに移動 したら、Laravel Sail を使って 開発環境を起動 します。
- 初回はDockerイメージのダウンロードが行われる ため、少し時間がかかります。
-d(デタッチドモード)オプション を付けると バックグラウンドで起動する ことができます。※ デタッチドモード: ターミナルが占有されず、別ターミナルでコマンドを打つ必要が無くなる
./vendor/bin/sail up -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を使っているプロセスを確認
// ポート80を使っているプロセスを確認
sudo lsof -i :80
// 表示例
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# nginx-arm 2150 root 4u IPv4 0x824861b0acf15092 0t0 TCP localhost:http (LISTEN)
② プロセスを終了させる方法
A) プロセス名に一致するプロセスを全部終了
// プロセス名に一致するプロセスを全部終了
// sudo pkill -f プロセス名 ※ -f:コマンドライン全体を検索
sudo pkill -f nginx
B) PIDを指定して強制終了
// PIDを指定して強制終了
// sudo kill -9 PID番号 ※ -9: 強制
sudo kill -9 2150
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 テーブルを含む必要なデータベースのテーブルが作成 されます。
// マイグレーションの実行
./vendor/bin/sail artisan migrate
// すべてのテーブルをリセットして初期データも入れたい場合
./vendor/bin/sail artisan migrate:refresh --seed
Laravel アプリをブラウザで確認
Laravel Sail が無事に起動したら、ブラウザで以下のURLにアクセスして、Laravel の初期画面が表示されるか確認し表示されれば、Laravelプロジェクトの作成 と Laravel Sailによる環境構築は完了です。
http://localhost

Laravel Sail の構成イメージ(図解)と 各サービスのポート・役割一覧表
Laravel Sail の 構成イメージ図 と、各サービスのポート番号および役割をまとめた一覧 になります。
構成イメージ(図解)
開発者PC
│
├─ ブラウザ
│ │
│ ▼
│ http://localhost:80 ← Laravel Webアクセス
│
└─ Docker (Laravel Sail)
│
├─ Laravel (PHP + Nginx + Vite)
│ │
│ ▼
│ MySQL (Database)
│ Port: 3306
│ 役割: データ保存、sessions テーブルもここに作成
│
├─ Redis (Cache / Queue)
│ Port: 6379
│ 役割: キャッシュやジョブキュー
│
├─ Meilisearch (Search Engine)
│ Port: 7700
│ 役割: 高速検索・全文検索
│
├─ Mailpit (SMTP / Web UI)
│ Port: 1025 / 8025
│ 役割: メール送信テスト、Web UIで確認
│
└─ Selenium (Standalone Chrome)
役割: E2Eテスト用ブラウザ
各サービスのポート・役割一覧表
| サービス | ポート | 役割 |
|---|---|---|
| Laravel (PHP + Nginx + Vite) | 80 / 5173 | Webサーバー + PHP実行 + Vite開発サーバー |
| MySQL | 3306 | データベース、sessions テーブル作成 |
| Redis | 6379 | キャッシュ、ジョブキュー |
| Meilisearch | 7700 | 高速検索、全文検索 |
| Mailpit | 1025 / 8025 | 開発用メール受信(SMTP / Web UI) |
| Selenium | – | E2Eテスト用ブラウザ |
Laravel Sail よく使うコマンド一覧
Laravel Sail を使った開発で、よく使用する便利なコマンドを紹介 します。
// Docker コンテナを起動 ※ -d:バックグラウンドで起動
./vendor/bin/sail up -d
// Docker コンテナを停止 ※ -v:ボリュームも削除
./vendor/bin/sail down -v
// 起動中のコンテナ一覧を表示
./vendor/bin/sail ps
// Docker イメージをビルド ※ --no-cache:キャッシュを使わずビルド
./vendor/bin/sail build --no-cache
// コンテナを再起動
./vendor/bin/sail restart
// コンテナ内のシェルに接続 ※ root-shell:root権限で接続
./vendor/bin/sail shell
// コンテナログを表示 ※ -f:ログをリアルタイム表示
./vendor/bin/sail logs -f
// Artisan コマンドを実行 ※ <cmd>:artisanコマンドを指定
// 例:マイグレーション実行
./vendor/bin/sail artisan migrate
// DBをリセットしてマイグレーション再実行 + Seeder実行
./vendor/bin/sail artisan migrate:fresh --seed
// ルート一覧を表示
./vendor/bin/sail artisan route:list
// Laravel REPL (Tinker) を起動
./vendor/bin/sail artisan tinker
// キャッシュ削除
./vendor/bin/sail artisan cache:clear
// 設定キャッシュ削除
./vendor/bin/sail artisan config:clear
// Composer コマンドを実行 ※ <cmd>:composerコマンドを指定
// 例:パッケージインストール
./vendor/bin/sail composer install
// npm コマンドを実行 ※ <cmd>:npmコマンドを指定
// 例:Vite 開発サーバー起動
./vendor/bin/sail npm run dev
まとめ
今回は、Laravel Sail を利用して、Laravel の開発環境を構築する方法を紹介しましたが、いかがでしたでしょうか?
Laravel Sail を利用することで、Docker を使った Laravel の 開発環境を簡単に構築すること ができます。
特に初心者の場合は、PHP や データベースなどの環境構築を個別に行う必要がない ため、Laravel の開発をスムーズに始めることができます。
ぜひ Laravel Sail を活用して、Laravel の 開発環境を構築 して、Webアプリケーションの開発 を進めていきましょう。



コメント