はじめに
この記事では、PHPのキャッチアップを目指す初学者が、Laravel + MySQL + phpMyAdmin + Composer を使った本格的なアプリ開発に挑戦するためのDocker環境構築手順を記録として残しています。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
書こうと思ったきっかけ
個人的にPHPのキャッチアップをしたくて、勉強している初学者による備忘録としてまとめました。
Laravelの実践的な環境構築を通じて、PHPの開発スキルを深めていくのが目的です。
内容
ディレクトリ構成(初期)
laravel-docker/
├── docker-compose.yml
├── Dockerfile
├── Makefile
└── src/ ← Laravelアプリが入る場所
Dockerfile
# PHP 8.2 + Apache の公式イメージをベースにする
FROM php:8.2-apache
# Laravelで必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
zip unzip git curl libzip-dev libonig-dev \
&& docker-php-ext-install pdo_mysql zip
# Composer(PHPのパッケージ管理ツール)をインストール
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# LaravelのpublicフォルダをApacheのルートに設定
RUN sed -i 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/000-default.conf
# 作業ディレクトリをApacheのルートに設定
WORKDIR /var/www/html
# Laravelアプリのソースコードをコピー(最初は空でもOK)
COPY src/ /var/www/html/
docker-compose.yml
version: '3.8'
services:
# Laravelアプリケーションを動かすコンテナ
app:
build: . # Dockerfile を使ってビルド
ports:
- "8080:80" # ホストの8080番 → コンテナの80番(Apache)
volumes:
- ./src:/var/www/html # ローカルのsrcをコンテナ内のLaravelディレクトリにマウント
depends_on:
- db # dbサービスが先に起動している必要がある
# MySQL データベースサーバ
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root # rootユーザーのパスワード
MYSQL_DATABASE: laravel # 自動的に作成するデータベース名
MYSQL_USER: laravel # アプリ用のユーザー名
MYSQL_PASSWORD: secret # アプリ用ユーザーのパスワード
volumes:
- db-data:/var/lib/mysql # データを永続化
ports:
- "3306:3306" # 必要ならローカルからDB接続できるようにする
# phpMyAdmin(MySQLのGUI管理ツール)
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8081:80" # ブラウザから http://localhost:8081 でアクセス可能
environment:
PMA_HOST: db # 接続するMySQLホスト名
MYSQL_ROOT_PASSWORD: root
# ボリューム定義(データ永続化)
volumes:
db-data:
Makefile
.PHONY: start stop build init-laravel
# コンテナをビルドして起動(リアルタイムログ付き)
start:
docker compose up --build
# コンテナをすべて停止・削除
stop:
docker compose down
# コンテナの再ビルド
build:
docker compose build
# Laravelアプリを初期化(src フォルダにプロジェクトを作成)
init-laravel:
docker compose run --rm app composer create-project laravel/laravel .
Laravelプロジェクト作成手順
cd laravel-docker
make init-laravel # src に Laravel プロジェクトが作成される
make start # コンテナを起動(ビルド付き)
動作確認URL
サービス | URL |
---|---|
Laravel | http://localhost:8080 |
phpMyAdmin | http://localhost:8081 |
実際の画面
まとめ
この構成により、Laravelを用いた実践的なPHPアプリ開発をDocker上で体験できます。
Forbidden エラーが出る場合は、Apacheのルート設定を public/
に変更することで解決しました(2025/05/03)。
しばらくの間、PHP に関する記事の投稿が増えるかと思いますが、どうぞよろしくお願いいたします。