こんにちは、イカPOです。
今日は Docker を使って PHP の開発環境をつくる 方法を紹介します。
AIによるコーディングが当たり前になった今、
「バックエンド(見えない仕組み)をどう設計するか」がとても重要になってきています。
でも、バックエンドってなんだか難しそう…と思う方も多いはず。
そこで今回は、最も手軽に学べるバックエンド言語「PHP」を題材に、
自分のパソコンで動かせる最小の開発環境 をつくってみましょう。
テンプレートはこちら
PHP開発環境最小テンプレート (0 ダウンロード )💬 注意:イカPOはPHP初心者です。
本記事は備忘録的にまとめているので、間違いがあればぜひ教えてください!
🧰 1. 事前準備
🐳 Docker Desktop をインストール
公式サイト:👉 https://www.docker.com/ja-jp/
Docker Desktopとは、あなたのPCの中に「仮想の小さなサーバー(=コンテナ)」をつくるツールです。
ApacheやPHPを個別インストールしなくても、同じ構成をすぐ再現できます。
🧩 VS Code(エディタ)を準備
Docker拡張とも相性が良く、設定もシンプル。
初心者に最もおすすめのエディタです。
📁 2. 作業用フォルダを作る
Windowsの場合は、ユーザーディレクトリ配下がトラブル少なめです。
パスに日本語やスペースが無い場所を推奨します。
例:
C:\Users\あなたのユーザー名\Work\php-baseapp-min
このフォルダに、最小テンプレート一式を置きます。
この記事はすでにこの構成を前提にしています。
⚙️ 3. 最小テンプレートを配置する
以下の構成が、今回使用する イカPOオリジナルの最小PHPテンプレート です。
(このひな形はイカPOが独自に作成したものです)
フォルダ構成
docker-compose.yml
Dockerfile
public/
├─ .htaccess
└─ index.php
🧾 docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./public:/var/www/html
container_name: php83-apache-min
environment:
APP_ENV: local
ポイント
build: .→ カレントディレクトリの Dockerfile でビルドcontainer_name:→ コンテナ名(任意)ports:→ ローカル8080 → コンテナ内80番(Apache)volumes:→ ローカルpublicをコンテナのドキュメントルートへマウントenvironment:→ 環境変数。getenv('APP_ENV')で参照可能
💡 public 内のファイルを編集すれば、ブラウザを更新するだけで変更を確認可能(自動リロードではなく手動更新で反映)。
🐘 Dockerfile
FROM php:8.3-apache
RUN a2enmod rewrite
WORKDIR /var/www/html
補足:
- ベース:
php:8.3-apache a2enmod rewrite→.htaccessのURL書き換え機能を有効化WORKDIR→ コンテナの作業フォルダを/var/www/htmlに指定
この3行で「PHP + Apache が動く最小のWebサーバー」が構築されます。
💬 public/index.php
<?php
date_default_timezone_set('Asia/Tokyo');
echo "<h1>PHP Minimal Starter</h1>";
echo "PHP version: " . phpversion() . "<br>";
echo "Time: " . date('Y-m-d H:i:s');
?>
最小の「動いていることがわかる」サンプルです。
編集して保存し、ブラウザを再読み込みすれば即反映します。
🧩 public/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
存在しないURLをすべて index.php に転送するルールです。
これにより、PHP側でURLに応じた処理を記述できるようになります。
🚀 4. 起動してみよう
Docker Desktopを起動して
ターミナルでプロジェクトフォルダへ移動し、次を実行👇
docker compose up -d
初回はベースイメージのダウンロードで少し時間がかかります。
完了したらブラウザで:
を開きましょう。
表示例
PHP Minimal Starter
PHP version: 8.3.x
Time: 2025-10-18 12:34:56
よく使うコマンド
| 操作 | コマンド |
|---|---|
| 停止 | docker compose down |
| 再起動(構成変更後) | docker compose up -d --build |
| ログ確認 | docker compose logs -f web |
📘 主要3ファイルの説明
ここからは、今回のテンプレートを動かすうえで欠かせない
3つの設定ファイルについて、具体的に説明します。
🧩 .htaccess(Apacheの設定ファイル)
.htaccess は Apache サーバーの動作ルールをフォルダ単位で指定する設定ファイル です。
今回の Docker 環境では /var/www/html(=public/)以下に配置され、
URLの書き換えやアクセス制御を行います。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
これは「アクセスされたパスに実際のファイルやディレクトリがなければ、
すべて index.php に処理を渡す」という意味です。
✅
.htaccessは 「すべてのリクエストをPHPで受け止める」ための設定ファイル です。
🧱 Dockerfile(PHP+Apache環境を構築する手順書)
Dockerfile は PHP と Apache が動く環境を構築するための設定ファイル です。
Dockerはこのファイルを読み込み、指定された環境を自動的に作ります。
FROM php:8.3-apache
RUN a2enmod rewrite
WORKDIR /var/www/html
| 行 | 内容 |
|---|---|
FROM php:8.3-apache | PHP8.3 と Apache の公式Dockerイメージを使う |
RUN a2enmod rewrite | .htaccess のURL書き換え機能を有効化する |
WORKDIR /var/www/html | コンテナ内の作業ディレクトリを設定 |
⚙️ docker-compose.yml(環境全体の構成設定)
docker-compose.yml は 複数のコンテナ(サービス)をまとめて起動・管理する設定ファイル です。
今回は PHP サーバーのみですが、MySQLなどを追加する場合もこのファイルで管理します。
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./public:/var/www/html
container_name: php83-apache-min
environment:
APP_ENV: local
| 項目 | 内容 |
|---|---|
build: | 同フォルダ内の Dockerfile を使って構築 |
ports: | ホストPCの8080番 → コンテナの80番を接続 |
volumes: | ローカル public/ フォルダを /var/www/html にマウント |
container_name: | コンテナ名(任意、変更可能) |
environment: | PHP側から取得できる環境変数を設定 |
📦 10. ファイル名やプロジェクト名を変えるとき
Dockerは、フォルダ単位で環境を認識します。
そのため、フォルダ名やファイル名を変更しても動作しますが、
いくつかの注意点があります。
✅ プロジェクトを複製したい場合
- 元のフォルダをコピーして、任意の新しい名前をつける
php-baseapp-min → php-todoapp - ファイル名(
docker-compose.yml、Dockerfile)はそのままでOK - ただし、
container_name:は変更推奨 。同名のコンテナが重なると起動エラーになります。docker-compose.ymlは確認しましょう。 - 起動時は、新しいフォルダへ移動してから
docker compose up -dを実行すれば完了。
🧩 新しいPHPプロジェクトを作るとき
- 新しいフォルダを作る(例:
php-loginapp) - このテンプレートをコピーして配置
public/index.phpを必要な内容に変更docker-compose.yml内のcontainer_nameを変更
💡 Dockerは「フォルダ=1プロジェクト」として扱うため、
同じテンプレートを何度でもコピーして新しい環境を作れます。
❌ やってはいけないこと
| 操作 | 理由 |
|---|---|
| docker-compose.yml を他の場所に移動する | build: . の相対パスが壊れる |
| 同名のコンテナを同時起動する | container_name が重複してエラーになる |
| public フォルダを削除する | Apache がルートを見失う |
🧭 11. まとめ
- Dockerを使えば、数分でPHP環境を再現できる
docker compose up -dで起動 →http://localhost:8080で確認publicを DocumentRoot にすることで安全・シンプル- フォルダ単位で複製・再利用できる(container_name は変更推奨)
本記事のテンプレートはイカPOオリジナル設計です。改善点等あれば教えてください。
PHP開発環境最小テンプレート (0 ダウンロード )▶ 次回予告
次回は、この環境を使って
シンプルなPHPアプリ(ログイン機能つき)を作っていきます。
お楽しみに🦑!
🛡️ 免責文
本記事は教育・情報提供を目的として作成しています。
内容の正確性には細心の注意を払っていますが、
動作環境やバージョンによる差異については保証できません。
実際の運用はご自身の責任で行ってください。
