0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP備忘録:Laravel + MySQL + phpMyAdmin を Docker で構築してみた記録

Posted at

はじめに

この記事では、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

実際の画面

Screenshot 2025-05-03 at 17.26.42.png

Screenshot 2025-05-03 at 17.27.01.png

まとめ

この構成により、Laravelを用いた実践的なPHPアプリ開発をDocker上で体験できます。

Forbidden エラーが出る場合は、Apacheのルート設定を public/ に変更することで解決しました(2025/05/03)。

しばらくの間、PHP に関する記事の投稿が増えるかと思いますが、どうぞよろしくお願いいたします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?