アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

DockerでLaravel 12の開発環境を構築する手順

Featured image of the post

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 にアクセスしてすると権限エラーが表示されると思いますので、画像の下のコマンドを叩いてみてください。

Image in a image block
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の初期画面が表示されれば成功です。

Image in a image block

まとめ

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

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会