PHPやComposerをローカルPCに直接インストールして、環境を汚したくない…。そんな悩みはDockerで解決しましょう!
この記事では、Docker Desktopを使って、Laravel(PHP) + Nginx + MySQL の標準的な開発環境をゼロから構築する手順を、コピペだけで進められるように解説します。
まず、プロジェクトのルートとなるフォルダ(例:my-laravel-app)を作成し、その中に以下のファイルを用意します。Laravel本体は後ほどコマンドで生成するため、今は空でOKです。
my-laravel-app/
├── docker-compose.yml
├── docker/
│ └── php/
│ └── Dockerfile
└── (ここにLaravelのファイル一式が入る)
複数のコンテナをまとめて管理するための設計図です。プロジェクトのルートに配置します。
version: '3.8'
services:
# PHP & Laravel Container
app:
build:
context: .
dockerfile: ./docker/php/Dockerfile
volumes:
- .:/var/www/html
networks:
- laravel-network
# Nginx Container
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- .:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- laravel-network
# MySQL Container
db:
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: laravel_db
MYSQL_ROOT_PASSWORD: password
networks:
- laravel-network
networks:
laravel-network:
driver: bridge
PHPの実行環境をカスタマイズするためのファイルです。
FROM php:8.2-fpm
# 必要なライブラリのインストール
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# PHP拡張機能のインストール
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# Composerのインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
ターミナル(PowerShellやMacのターミナル)を開き、プロジェクトフォルダへ移動して以下の順にコマンドを打ちます。
docker-compose up -d --build
docker-compose exec app composer create-project laravel/laravel .
※末尾の . は「現在のディレクトリにインストールする」という意味です。
書き込み権限でエラーが出る場合は、以下のコマンドを実行してください。
docker-compose exec app chmod -R 777 storage bootstrap/cache
ブラウザで http://localhost:8080 にアクセスしてみましょう。Laravelのウェルカム画面が表示されれば成功です!
| コマンド | 説明 |
|---|---|
docker-compose up -d |
コンテナの起動(バックグラウンド) |
docker-compose stop |
コンテナの停止 |
docker-compose exec app php artisan ... |
Artisanコマンドの実行 |
docker-compose ps |
起動中のコンテナ確認 |
Dockerを使うことで、チームメンバー間で全く同じ環境を共有でき、「自分の環境では動くのに!」というトラブルを防ぐことができます。
今回は最小限の構成でしたが、ここからRedisを追加したり、Mailpit(メールテスト用ツール)を追加したりして、自分好みの最強の開発環境を作ってみてください!