1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【第1回】Docker DesktopとLaravel Sailを使ったLaravelローカル環境の構築

1
Last updated at Posted at 2026-09-10

はじめに

はじめまして、株式会社TechoesのRです!2026年4月に入社した新卒エンジニアです。
次のプロジェクトでLaravelを使用することになったため、既存の開発環境とは分けて、Laravelの学習・検証用環境を構築しました。

今回はWindows上にDocker Desktopを導入し、Laravel Sailを使ってLaravel、MySQL、Redisを起動します。

構築した環境

ソフトウェア バージョン
PHP 8.5.9
PHP-FPM 8.5系
Laravel 13.29.0
Laravel Sail 1.67
MySQL 8.4
Redis Alpineイメージ
Docker Compose v5.1.4

Laravelプロジェクトは、既存の案件と混ざらないように次の場所へ作成しました。

C:\laravel-app

Laravel Sailについて

Laravel Sailは、Laravelの開発環境をDockerで動かすための仕組みです。

PHPやMySQLなどをWindowsへ個別にインストールする代わりに、それぞれをDockerコンテナとして管理できます。

今回の環境では、次の3つを使用します。

laravel.test:LaravelとPHP
mysql:データベース
redis:キャッシュなどに使用

Laravelプロジェクトの作成

PowerShellを開き、Cドライブ直下へ移動します。

cd C:\

Composerを使ってLaravelプロジェクトを作成します。

composer create-project laravel/laravel laravel-app

作成したフォルダへ移動します。

cd C:\laravel-app

Laravel Sailを追加します。

composer require laravel/sail --dev

Sailの設定を作成します。

php artisan sail:install

使用するサービスを聞かれたら、今回はMySQLとRedisを選択します。

環境変数の設定

.envを開き、データベースとRedisの接続情報を設定します。

APP_URL=http://localhost:8000
APP_PORT=8000

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password

FORWARD_DB_PORT=3307

REDIS_HOST=redis
REDIS_PORT=6379
FORWARD_REDIS_PORT=6380

注意点は、LaravelからMySQLへ接続するときのポートには3306を使用することです。Windows側のツールからMySQLへ接続する場合は、公開した3307を使用します。

ホスト:localhost
ポート:3307

同様に、LaravelからRedisへ接続するときは6379、Windows側から接続するときは6380を使用します。

Dockerコンテナの起動

次のコマンドでコンテナを起動します。

docker-compose up -d

起動状態を確認します。

docker-compose ps

次のコンテナが表示されれば起動できています。

laravel-app-laravel.test-1
laravel-app-mysql-1
laravel-app-redis-1

ブラウザでhttp://localhost:8000へアクセスし、Laravelの初期画面が表示されれば成功です。

Migrationの実行

Laravelのコンテナ内でMigrationを実行します。

docker-compose exec -T laravel.test php artisan migrate

実行状態は次のコマンドで確認できます。

docker-compose exec -T laravel.test php artisan migrate:status

今回は、ユーザー、キャッシュ、ジョブに関する初期テーブルが作成されました。

Redisの接続確認

Redisが使用できるか確認します。

docker-compose exec -T redis redis-cli ping

次のように表示されれば接続できています。

PONG

Laravelのテスト実行

Laravelに最初から用意されているテストを実行します。

docker-compose exec -T laravel.test php artisan test

テストがすべてPASSになれば、Laravelの基本的な実行環境は正常です。

発生した問題

Laravelの画面で500エラーが発生する

今回の環境では、storagebootstrap/cacheの書き込み権限が原因で500エラーが発生しました。

次のコマンドで所有者と権限を修正しました。

docker-compose exec -T --user root laravel.test chown -R sail:sail storage bootstrap/cache
docker-compose exec -T --user root laravel.test chmod -R ug+rwX storage bootstrap/cache
docker-compose exec -T laravel.test php artisan view:clear

修正後に再度アクセスすると、HTTPステータス200が返ることを確認できました。

Docker Desktopへ接続できない

次のエラーが発生することがありました。

failed to connect to the docker API
dockerDesktopLinuxEngine

このエラーはLaravelではなく、Docker DesktopのLinuxエンジンが起動していない場合に発生します。まず、次のコマンドで状態を確認します。

wsl --list --verbose
docker info

今回の環境では、Docker Desktopの一時ソケットが残っていたことが原因でした。Dockerを停止して一時ファイルを退避し、使用していないDocker AI機能を無効化して復旧しました。

いきなり「Reset to factory defaults」を実行すると、コンテナや設定を失う可能性があります。最初にDockerの再起動やログ確認を行うのが安全です。

Dockerのログは、次のフォルダから確認できます。

C:\Users\ユーザー名\AppData\Local\Docker\log\host

よく使うコマンド

起動

cd C:\laravel-app
docker-compose up -d

状態確認

docker-compose ps

Migration実行

docker-compose exec -T laravel.test php artisan migrate

テスト実行

docker-compose exec -T laravel.test php artisan test

停止

docker-compose down

感想・まとめ

Laravel Sailを使用することで、PHP、MySQL、RedisをDockerコンテナとしてまとめて準備できました。

一方で、Docker Desktopが正常に起動しているか、コンテナ内とWindows側で使用するポートが異なること、Laravelが書き込むフォルダの権限などには注意が必要です。

環境構築後は、画面表示だけで終わらせず、Migration、Redis接続、テストまで確認することで、Laravelを学習できる状態になっていることを判断できます。

参考資料

この連載について

本記事は、Laravelのローカル環境構築からAWS ECS Fargateでの実行、パフォーマンスチューニングまでを扱う連載の第1回です。

今回は最初のステップとして、Docker DesktopとLaravel Sailを使ったローカル環境の構築を行いました。今後は、今回作成した環境をもとに、クラウド上での実行と性能改善まで段階的に確認していきます。

次回の記事でやること

次回は、LaravelをAWS ECS Fargateで実行することを見据え、コンテナ構成とAWS上で必要になるサービス、ローカル環境との設定の違いを整理する予定です。

今後の連載では、次の内容を取り上げます。

  • AWS ECS FargateでのLaravel実行環境の構築
  • Amazon RDSやAmazon ElastiCacheとの接続
  • ログと監視の設定
  • 負荷試験とパフォーマンスチューニング
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?