目的
- ローカル環境を汚さずに Laravel + MySQL の開発環境を構築する
- フロントエンド(Next.js)とは分離し、バックエンドのみ Docker 化する
全体構成
backend/
├ docker-compose.yml
├ Dockerfile
└ src/ ← Laravel プロジェクト
- Docker 化対象:Laravel + MySQL
- フロントエンド:ローカル実行(Docker なし)
1. Dockerfile の作成(Laravel 用)
backend/Dockerfile
# PHP 8.1 の公式イメージを使用
FROM php:8.1
# OS パッケージと PHP 拡張のインストール
# git : composer install 用
# unzip : zip 展開用
# libzip-dev: PHP zip 拡張のビルドに必要
RUN apt-get update && apt-get install -y \
git \
unzip \
libzip-dev \
&& docker-php-ext-install \
pdo_mysql \
zip
# Composer を公式イメージからコピー
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Laravel のルートディレクトリ
WORKDIR /var/www
2. docker-compose.yml の作成
backend/docker-compose.yml
services:
# Laravel アプリケーション
app:
build: .
container_name: laravel_app
ports:
- "8000:8000"
volumes:
- ./src:/var/www
depends_on:
- db
command: php artisan serve --host=0.0.0.0 --port=8000
# MySQL データベース
db:
image: mysql:8.0
container_name: laravel_db
environment:
MYSQL_DATABASE: app_db
MYSQL_ROOT_PASSWORD: password
TZ: Asia/Tokyo
ports:
- "3306:3306"
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
3. Laravel プロジェクトの作成
cd backend
mkdir src
docker compose run --rm app composer create-project laravel/laravel .