Contents
Laravel SailによるDocker環境構築の意義と実践ガイド
Laravel Sailは、ローカル開発環境を手軽に構築できるDockerベースのソリューションとして注目されています。Laravel 10対応により、安定した運用が可能となり、WSL2との連携もスムーズに実現できます。特にWindowsユーザーにとって、WSL2を活用することでLinux環境と同等のパフォーマンスを得られることから、開発効率の向上が期待されます。以下では、各OSに合わせたDockerの導入手順やSailの特徴を解説します。
Docker EngineとDocker Composeのインストール確認手順
Laravel SailはDocker EngineとDocker Composeに依存するため、環境構築前に正しいバージョンが導入されているかを確認することが不可欠です。以下に、各OS別のインストール方法と確認手順を紹介します。
共通の確認手順
Docker EngineとDocker Composeのバージョンは、どのOSでも以下のコマンドで確認できます。
|
1 2 3 |
docker --version docker-compose --version |
注意: Docker Desktop for Mac/Windowsでは
docker-composeが自動インストールされるため、別途手動インストールは不要です。Linux環境ではパッケージ管理を活用する必要があります。
macOS用Homebrewインストール
macOSでは公式のDocker Desktop for Macを使用するのが最も簡単です。以下のコマンドでバージョンを確認できます。
-
Terminalを開き、以下を実行:
bash
docker --version
docker-compose --version -
Docker Desktopがインストールされている場合、
dockerとdocker-composeのバージョンが表示されます。最新版であれば、Laravel Sailの互換性に問題はありません。
Linux(Ubuntu)のapt管理
Ubuntuユーザーはパッケージマネージャーを使用してDockerを導入します。以下のコマンドでインストールと確認を行います。
-
Docker Engineをインストール:
bash
sudo apt update && sudo apt install docker.io -
Docker Composeは別途インストールが必要です。以下を実行:
bash
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose -
以下のコマンドでバージョンを確認:
bash
docker --version
docker-compose --version
Windows(WSL2)でのdockerdesktop設定
WindowsではWSL2環境とDocker Desktop for Windowsを連携させる必要があります。
- Docker Desktopを公式サイトからインストールし、WSL2の有効化を確認します。
- WSL2で
wsl.exe --list --verboseを実行し、WSL2が有効になっていることを確認します。 -
Terminalで以下を実行:
bash
docker --version
docker-compose --version -
Docker Desktopの設定画面でWSL2をデフォルトに指定することで、Linuxコマンドでの利用が可能になります。
Laravelプロジェクト作成時のSail自動有効化設定
Laravel Sailは新規プロジェクト生成時に自動で有効化される仕組みがあります。以下のように手順を踏むことで、すぐにDocker環境を使用できます。
新規プロジェクト生成時のオプション
Laravelではcomposer create-projectコマンドに--with=sailオプションを付けることでSailが自動で導入されます。
|
1 2 |
composer create-project laravel/laravel my-app --with=sail |
補足:
--with=sailは、プロジェクト生成時にLaravel Sailパッケージとdocker-compose.ymlファイルを同時にインストールするオプションです。これにより、すぐにDocker環境を構築できます。
既存プロジェクトへのSail導入
既存のLaravelプロジェクトにSailを追加するには、以下のコマンドを使用します:
|
1 2 3 |
composer require laravel/sail --dev php artisan sail:install |
注意:
artisanコマンドが実行されると、Docker ComposeファイルとSailスクリプトが自動生成されます。その後は./sail upでサービスを起動できます。
docker-compose.ymlファイルの構造とカスタマイズ
Laravel Sailではdocker-compose.ymlファイルでコンテナの設定を行います。以下の例では、MySQLやRedisなど各サービスの定義と、環境変数の上書き方法を解説します。
サービス定義の基本構成
以下は標準的なdocker-compose.ymlの一部です:
| プロパティ | 説明 |
|---|---|
| services | 実行するコンテナサービス(MySQL、PHP、Redisなど) |
| ports | ローカルとコンテナ間でマッピングするポート |
| volumes | コンテナ内のデータをホストに永続化する設定 |
このファイルはdocker-compose up時に自動読み込まれるため、カスタマイズは必要最小限で可能です。
環境変数の上書き方法
環境変数をカスタムしたい場合は.envファイルを使用します。たとえばMySQLのデータベース名やユーザー情報を変更するには以下のように記述します:
|
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=my_custom_db DB_USERNAME=my_user |
補足:
.envファイルはLaravelで環境ごとの設定を管理するためのファイルです。この中に定義された変数は、アプリケーション内やコンテナ内で参照されます。
サービス起動後の接続方法とアクセス手順
Docker環境を起動後は、Webブラウザやコンテナ内部からアプリケーションにアクセスできます。以下に具体的な手順を示します。
ブラウザでのアプリ起動
docker-compose upまたはsail upでサービスを起動します。- Webブラウザを開き、ローカルホストの8000ポート(http://localhost:8000)にアクセスします。
Laravelの初期画面が表示されれば、環境構築は成功です。
コンテナ内部からの接続確認
コンテナ内にSSHでアクセスするには、以下のコマンドを使用します:
|
1 2 |
./sail ssh |
このコマンドでPHPやMySQLのコンテナに接続でき、ログ確認や手動でのCLI操作が可能です。
よくあるエラーの特定と解決策
Laravel Sailの導入・運用ではいくつかの典型的なエラーが発生します。以下に代表的な対応法を紹介します。
ポート競合時の対処
エラーメッセージ例: Address already in use
ポート8000や3306などの既存サービスと競合している可能性があります。以下のコマンドで使用中のポートを確認し、必要に応じてdocker-compose.ymlのポート設定を変更してください:
|
1 2 |
lsof -i :8000 |
イメージPull失敗時のキャッシュクリア
エラーメッセージ例: Error response from daemon: invalid argument
イメージのプルに失敗する場合は、Dockerのキャッシュをクリアし、再試行してください。
|
1 2 3 |
docker-compose down -v docker system prune -a --force |
WSL2ではネットワーク設定ミスも原因となるため、wsl --shutdownと再度起動することもあります。
まとめ
本記事では、Laravel 10対応のSailによるDocker環境構築手順をステップバイステップで解説しました。以下が主要なポイントです:
- Laravel 10とWSL2との連携により、クロスプラットフォームでの開発効率化が可能
- Docker EngineとDocker Composeのインストール確認は各OSに合わせて行うことが必須
composer create-project --with=sailでSailを自動有効化し、簡易な構築が可能docker-compose.ymlファイルのカスタマイズにより、環境変数やサービス定義の柔軟な調整が可能- エラー対処としてポート競合・イメージPull失敗時の解決策を解説
記事を参考にLaravel Sail環境を構築し、ローカル開発の効率化を実感してください。