Laravel 12がリリースされ、開発者の間でも注目が集まっています。今回は、Laravel 12の開発環境をDockerで構築する方法を、初心者にも分かりやすくステップバイステップで解説します。Laravel Sailではなく、独自のDocker環境を構築する方法に焦点を当て、より細かい制御が可能な開発体験を提供します。
[目次を開く]
前提条件
以下の環境を前提に進めます:
- OS:Mac(M1/M2対応)、Windows、Linux
- Docker Desktop インストール済み
- Docker Compose 使用可能
- Laravel 12 プロジェクトが未作成、または新規に作成予定
1. ディレクトリ構成の準備
まず、任意の場所にLaravelプロジェクト用のディレクトリを作成します。
mkdir docker-laravel12
cd docker-laravel12
プロジェクト直下に以下の構成を想定します。
docker-laravel12/
├── docker/
│ ├── php/
│ │ └── Dockerfile
│ └── nginx/
│ └── default.conf
├── docker-compose.yml
└── src/ (ここにLaravel 12がインストールされます)
2. Dockerfileの作成(PHP)
docker/php/Dockerfile
を作成し、以下の内容を記述します。
FROM php:8.3-fpm
# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
zip unzip git curl libzip-dev libonig-dev libpng-dev \
&& docker-php-ext-install pdo pdo_mysql mbstring zip exif pcntl
# Composerインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www
3. Nginx設定ファイルの作成
docker/nginx/default.conf
を以下のように設定します。
server {
listen 80;
server_name localhost;
root /var/www/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
4. Docker Composeファイル
docker-compose.yml
に以下の内容を記述します。
version: '3.8'
services:
app:
build:
context: .
dockerfile: docker/php/Dockerfile
volumes:
- ./src:/var/www
container_name: laravel-app
web:
image: nginx:stable
ports:
- "8000:80"
volumes:
- ./src:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: secret
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
5. Laravel 12のインストール
コンテナが起動したら、Laravel 12をインストールします。
docker-compose run --rm app bash
composer create-project laravel/laravel:^12.0 .
exit
docker-compose up -d
その後、ブラウザで http://localhost:8000
にアクセスしてすると権限エラーが表示されると思いますので、画像の下のコマンドを叩いてみてください。

docker compose exec app bash
# コンテナ内で
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache
chmod 666 database/database.sqlite
exit
Laravelの初期画面が表示されれば成功です。

まとめ
Dockerを使うことで、Laravel 12の開発環境をOSに依存せずに構築できます。今回はNginx・PHP・MySQLの3コンテナ構成でしたが、RedisやMailHogなどを追加して拡張することも容易です。チーム開発でも全員が同じ環境を共有できる点が大きなメリットです。