Tech Starlog

Laravel12 + PHP8.4のDocker環境構築メモ

投稿日:2026/01/02

  • 本ブログは、エンジニアとして学んだことを整理・記録するための技術ブログです。
  • 初回投稿では、このブログを構築するために用意したLaravel × Docker の開発環境について簡単にまとめます。
    • LaravelをDockerで動かす最小構成にしています。

全体構成

blog/
├── docker/
│   ├── php/
│   │   └── Dockerfile
│   └── nginx/
│       └── default.conf
├── src/                    ← 後からLaravelプロジェクトが入る
├── docker-compose.yml
└── .gitignore

技術スタック

  • PHP 8.4
  • Laravel 12
  • MySQL 8
  • Docker / Docker Compose
  • Nginx

環境構築手順

① docker-compose.yml の作成

version: "3.9"

services:
  app:
    build:
      context: ./docker/php
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html

  web:
    image: nginx:1.25
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: laravel
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

② PHP用Dockerfileの作成

FROM php:8.4-fpm

RUN apt-get update && apt-get install -y \
    git \
    unzip \
    libzip-dev \
    && docker-php-ext-install pdo_mysql zip

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

③ Nginxの設定ファイル作成(default.conf)

server {
    listen 80;
    root /var/www/html/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass app:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

④ Laravelプロジェクトの作成

Dockerコンテナ上でLaravelをインストールします。

docker compose run --rm app \
  composer create-project laravel/laravel . "^12.0"

作成後の構成

src/
├── app
├── artisan
├── composer.json
└── ...

⑤ コンテナの起動

docker compose up -d --build

⑥ Laravel初期設定

アプリケーションキーの生成

docker compose exec app php artisan key:generate

.envの編集(DB接続設定)

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel

マイグレーションの実行

docker compose exec app php artisan migrate

⑦ Lravelトップ画面へアクセス

http://localhost:8080

Laravel のトップ画面が表示されれば、環境構築は完了です。


おわりに

今回はLaravelをDocker環境で立ち上げるまでをまとめました。