環境構築が嫌いなWeb大好き人間がDockerを初めて入れてみた

Laravelを使って開発を始めたいけど、環境構築が面倒…
そんなあなたに贈る、DockerでサクッとLaravelを動かすための手順を紹介します!
Windowsでの実体験をもとに、つまずきやすいポイントもフォローしています🛠️

✅ この記事でできるようになること

  • Docker Desktopのインストール
  • WSL2の準備と更新
  • Laravel用のプロジェクトフォルダ作成
  • docker-composeでWebサーバ・PHP・DBの構築
  • Laravelのインストールと起動確認

🛠 前提

  • Windows 10 か 11(WSL2有効)
  • Docker未インストール状態からスタート

インストールから起動まで

① Docker Desktopのインストール

  1. Docker公式サイト にアクセス
  2. 自分のPCにあったバージョン(Windows → AMD64など)を選んでインストーラーをダウンロード
  3. インストーラーを実行 → 「WSL2を使う」にチェックを入れてインストール

初回起動時に「WSL needs updating」という画面が出た場合、PowerShellで以下を実行します
wsl --update

  1. インストール後はPCを再起動
  2. 初回起動後に「Accept」して進む
  3. 「WSLの更新を求められたら」→ PowerShellで以下を実行:
wsl --update
wsl --set-default-version 2

② 開発用フォルダの作成

以下のような構成を想定します:

C:\Users\ユーザー名\projects\laravel-docker

PowerShellで以下のようにフォルダを作成:

cd ~
mkdir projects
cd projects
mkdir laravel-docker
cd laravel-docker
mkdir nginx php src

③ Docker関連ファイルの作成

以下のような構成で関連ファイルを作成していきます

laravel-docker/ ← プロジェクトのルート
├── docker-compose.yml ← コンテナの定義ファイル
├── nginx/
│ └── default.conf ← Nginxの設定ファイル
├── php/
│ └── Dockerfile ← PHP(Laravel実行環境)のDockerfile
└── src/ ← Laravelアプリケーション本体(後で生成される)

src/ フォルダは composer create-project laravel/laravel . を実行したあとにLaravel一式がここに展開されます。

📄 docker-compose.yml

version: '3.8'

services:
  app:
    build:
      context: ./php
    container_name: laravel_app
    volumes:
      - ./src:/var/www
    working_dir: /var/www
    ports:
      - "9000:9000"
    networks:
      - laravel

  web:
    image: nginx:alpine
    container_name: laravel_web
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app
    networks:
      - laravel

  db:
    image: mysql:8.0
    container_name: laravel_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: secret
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - laravel

volumes:
  db_data:

networks:
  laravel:
    driver: bridge

📄 php/Dockerfile

FROM php:8.2-fpm

RUN apt-get update && apt-get install -y \
    zip unzip curl libzip-dev libonig-dev libxml2-dev \
    && docker-php-ext-install pdo_mysql mbstring zip exif pcntl

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

※拡張子不要で【Dockerfile】というファイル名にする

📄 nginx/default.conf

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

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

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

    location ~ /\.ht {
        deny all;
    }
}

④ Dockerを起動&Laravelをインストール

まずDockerを起動し、以下のコマンドでコンテナを立ち上げます:

docker compose up -d --build

次にLaravelをインストール:

docker compose exec app composer create-project laravel/laravel .

Laravelインストール後にエラーが出たらパーミッションの変更を試してください。
※storage と bootstrap/cache の権限が足りないと「Permission denied」エラーが出る!
docker compose exec app chmod -R 777 storage bootstrap/cache

⑥ hostsファイルの編集(管理者で開く)

http://laravel.local でアクセスしたいので、以下に追記:

C:\Windows\System32\drivers\etc\hosts

末尾に以下を追加:

127.0.0.1 laravel.local

⑦ Laravelにアクセス!

🎉 http://laravel.local にアクセスすると、Laravelのトップ画面が出れば大成功!

🔧 MySQL接続にする場合は…

.env を以下のように変更:

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

マイグレーション実行:

docker compose exec app php artisan config:clear
docker compose exec app php artisan migrate

✅ Dockerの開始・停止方法

開始(再開)

docker compose up -d

停止

docker compose down

📝 まとめ

  • DockerでLaravelの環境構築が爆速&再現性抜群!
  • 複数PC間でGitとDockerを使えば完全な共有開発が可能!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です