0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M1 MacBook + Laravel 9 + PHP 8.2 + Docker + phpMyAdmin対応版 のDocker開発環境 を 完全に0から構築する手順

Last updated at Posted at 2025-08-04

はじめに

本番環境(エックスサーバー)には将来デプロイ予定のため、
開発環境に特化した内容です。

前提条件

▪️ M1/M2 Mac(Apple Silicon)

▪️ macOSに Docker Desktop インストール済み

⭐️ ディレクトリ構成

プロジェクト直下に以下の構成を用意:

Laravel_app/
├── docker/
│   ├── apache/
│   │   └── default.conf
│   ├── db/
│   │   └── my.cnf
│   └── php/
│       └── Dockerfile
├── docker-compose.yml
├── src/  ← Laravel本体
└── README.md

⭐️ 手順

✅ 1:Dockerfile(docker/php/Dockerfile)

FROM php:8.2-apache

# 必要なPHP拡張
RUN apt-get update && apt-get install -y \
    libpng-dev libjpeg-dev libfreetype6-dev \
    libonig-dev libzip-dev zip unzip \
    && docker-php-ext-install pdo_mysql mbstring bcmath gd zip

# Apacheのmod_rewriteを有効化
RUN a2enmod rewrite

# 作業ディレクトリ
WORKDIR /var/www/html

# 権限調整
RUN chown -R www-data:www-data /var/www/html

# composerインストール
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

✅ 2:Apache設定(docker/apache/default.conf)

docker/apache/default.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html/public

    <Directory /var/www/html/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

✅ 3:DB設定(docker/db/my.cnf)

docker/db/my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

✅ 4:docker-compose.yml

docker-compose.yml
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: docker/php/Dockerfile
    container_name: task-reminder-app # 「アプリ名+app」がおすすめ
    volumes:
      - ./src:/var/www/html
      - ./docker/apache/default.conf:/etc/apache2/sites-available/000-default.conf
    ports:
      - "8080:80"
    depends_on:
      - db

  db:
    image: mariadb:10.5
    container_name: task-reminder-db # 「アプリ名+db」がおすすめ
    volumes:
      - dbdata_task_reminder:/var/lib/mysql
      - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: root # 開発はrootでOK
      MYSQL_DATABASE: task_reminder # 開発のDB名
      MYSQL_USER: laravel_user # 開発のユーザー名
      MYSQL_PASSWORD: password123 # 開発のパスワード
      
    ports:
      - "3307:3306" # portsは被らないように注意

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    platform: linux/amd64 # M1MacBookなら必要
    container_name: task-reminder-phpmyadmin # 「アプリ名+phpmyadmin」がおすすめ
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      PMA_USER: laravel_user # dbと合わせる
      PMA_PASSWORD: password123 # dbと合わせる
    depends_on:
      - db

volumes:
  dbdata_task_reminder: # 「dbdata+アプリ名」がおすすめ

✅ 5:.env(LaravelのDB設定)

「docker-compose.yml」に合わせる

/src/.env
DB_CONNECTION=mysql
DB_HOST=db # container_name ではなく "サービス名" を指定
DB_PORT=3306
DB_DATABASE=task_reminder
DB_USERNAME=laravel_user
DB_PASSWORD=password123
用途 .envのDB_PORT docker-composeの db.ports
Laravelから接続 3306 にすべき ✅ ports:不要 or 3307:3306
外部(MacからDB)接続 .envに影響しない 3307:3306 にすると便利

✅ 6:コンテナの初回起動

docker compose up -d --build

✅ 7:コンテナの2回目以降の起動 & コンテナに「入る」コマンド

コンテナの2回目以降の起動

# v2推奨(docker-compose.yml のあるディレクトリで)
docker compose up -d

# 変更がある時だけ再ビルド
# docker compose up -d --build

コンテナに「入る」コマンド

# 例:(サービス名=app、コンテナ名は task-reminder-app)
docker compose exec app bash

✅ 8:Laravelにアクセス

アプリ: http://localhost:8080

phpMyAdmin: http://localhost:8081

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?