PR

🧱 初心者向け|DockerでつくるPHP開発環境(最小テンプレート付き)

こんにちは、イカ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が独自に作成したものです)

PHP開発環境最小テンプレート (0 ダウンロード )

フォルダ構成

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

初回はベースイメージのダウンロードで少し時間がかかります。
完了したらブラウザで:

👉 http://localhost:8080

を開きましょう。


表示例

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の設定ファイル)

.htaccessApache サーバーの動作ルールをフォルダ単位で指定する設定ファイル です。
今回の 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環境を構築する手順書)

DockerfilePHP と Apache が動く環境を構築するための設定ファイル です。
Dockerはこのファイルを読み込み、指定された環境を自動的に作ります。

FROM php:8.3-apache
RUN a2enmod rewrite
WORKDIR /var/www/html
内容
FROM php:8.3-apachePHP8.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は、フォルダ単位で環境を認識します。
そのため、フォルダ名やファイル名を変更しても動作しますが、
いくつかの注意点があります。

✅ プロジェクトを複製したい場合

  1. 元のフォルダをコピーして、任意の新しい名前をつける php-baseapp-min → php-todoapp
  2. ファイル名(docker-compose.ymlDockerfile)はそのままでOK
  3. ただし、container_name: は変更推奨 。同名のコンテナが重なると起動エラーになります。docker-compose.ymlは確認しましょう。
  4. 起動時は、新しいフォルダへ移動してから docker compose up -d を実行すれば完了。

🧩 新しいPHPプロジェクトを作るとき

  1. 新しいフォルダを作る(例:php-loginapp
  2. このテンプレートをコピーして配置
  3. public/index.php を必要な内容に変更
  4. 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アプリ(ログイン機能つき)を作っていきます。
お楽しみに🦑!

🛡️ 免責文

本記事は教育・情報提供を目的として作成しています。
内容の正確性には細心の注意を払っていますが、
動作環境やバージョンによる差異については保証できません。
実際の運用はご自身の責任で行ってください。

タイトルとURLをコピーしました