DockerでPHP開発環境を構築する方法【初心者向け・コピペOK】

プログラミング学習や新しいプロジェクトの立ち上げ時、多くのエンジニアが最初につまずくのが「ローカル開発環境の構築」です。特にPHP環境では、PHP本体のバージョン管理、Webサーバー(NginxやApache)、データベース(MySQLなど)、そしてそれらの相互連携設定など、非常に多くの手間と時間がかかります。これらの設定ミスや環境のわずかな違いが原因で、「自分のPCでは動くのに、本番環境で動かない」という、初心者にとって最も厄介なトラブルを引き起こすことも少なくありません。

そこで登場するのが、環境構築の悩みを根本から解決するDocker(ドッカー)です。Dockerを使えば、これらの複雑な実行環境全体をコンテナという形でカプセル化し、「どこでも、誰のPCでも、まったく同じように動く」開発環境を、驚くほど簡単に手に入れることができます。これは、環境構築の「再現性」と「隔離性」を保証する、現代のWeb開発における必須技術です。

本記事は、そうした煩雑なPHPのローカル環境構築を、わずか数回の操作で「コピペで即座にOK」の状態にするための完全ガイドです。初心者や若手エンジニアの方をターゲットに、Web開発に必要な最小構成(PHP-FPMとNginx)に絞り込み、動作確認用コードも含めて全てを実際にコピー&ペーストして動かせる形式で丁寧に解説します。DockerやComposer(PHPのパッケージ管理ツール)の基本的な概念は簡潔に説明しますが、まずは理屈よりも「動く体験」を最優先にしたい方は、コードブロックをそのまま貼り付けて実行してください。この環境を手に入れることで、あなたは面倒な設定作業から完全に解放され、すぐに本質であるPHPのコーディングという最も重要な作業に集中できるようになります。

🐳 なぜDockerでPHP開発環境を作るのか?必須となった3つの理由

プログラミング学習や実務経験が浅いエンジニアにとって、Dockerの導入は最初は少し難しく感じるかもしれません。しかし、面倒な環境構築を避け、安定した開発と効率的なチーム連携を実現するために、PHP開発においてDockerは今や必須の技術となっています。ローカル環境に直接PHPや関連ツールをインストールする「ベアメタル方式」と比べ、Dockerを選ぶべき決定的な理由を解説します。

環境差異による「動かない」トラブルを完全に解消する(再現性)

ローカル環境に直接PHPをインストールする最大の欠点は、環境の再現性が極めて低いことです。 例えば、あなたのPC(Mac)ではPHP 8.3が動いているのに、本番サーバー(Linux)ではPHP 8.1が使われている、といった「バージョン衝突」が発生します。また、データベースやWebサーバー(Nginx, Apache)の設定、PHPの必要な拡張モジュールの有無など、一つでも設定が異なると「自分のPCでは動くのに、デプロイしたらエラーになった」という、若手エンジニアにとって最も厄介なトラブルに直面します。

Dockerは、PHPの実行環境全体を「コンテナ」というカプセルの中に閉じ込めます。このコンテナは、どのOS(Windows, Mac, Linux)で実行しても常に同じ設定、同じ挙動を保証します。これにより、チームメンバー全員が同じ環境で開発でき、本番環境と開発環境のギャップがゼロになります。

環境構築の手間とコストを劇的に削減する(隔離性・効率性)

従来のPHP開発環境(LAMP/LEMPスタック)を構築するには、OSのパッケージ管理ツールを使って個別にインストールし、設定ファイルを編集し、再起動するという複雑な手順が必要でした。これらは時間と専門知識を要する作業です。

Dockerを使えば、compose.ymlという一つの設定ファイルを定義するだけで、PHP-FPM、Nginx、MySQLといった複数のサービスを一括で、しかも数分で立ち上げることができます。また、それぞれのサービス(コンテナ)は独立しているため、あるプロジェクトでPHP 8.0を使い、別のプロジェクトでPHP 8.3を使うといったバージョン管理の切り替えが、システムを壊すことなく簡単に行えます。この隔離性が学習コストを大きく下げ、「コピペで動く」環境を可能にしています。

開発初期の学習コストを下げる(初心者向け)

初心者がプログラミング学習でつまずく最大の要因は、コーディング以前の環境構築に時間と労力を費やしてしまうことです。Dockerを導入することで、この最初の障壁を劇的に下げることができます。

compose.ymlというテンプレートファイルさえ用意しておけば、複雑なOS設定やインストール作業は一切不要です。あなたはただ、コードを貼り付けてコマンドを打つだけで、すぐに「動く体験」を得ることができます。この成功体験の積み重ねが、学習初期のモチベーション維持に不可欠です。Dockerは、面倒なインフラの知識を脇に置き、PHPのコーディングという本質的な学習にすぐに集中させてくれます。

 

想定する構成(最小構成)

今回のサンプルは以下のシンプル構成を想定します。学習・小規模開発に適した形です。

  • PHP-FPMコンテナ(PHP 8系を想定)
  • Webサーバ:nginx コンテナ
  • データベース(任意):MySQL / MariaDB コンテナ(必要なら追加)
  • ホスト側のプロジェクトをボリュームでマウントして編集可能
 

PHPフレームワークLaravel入門第2版 [ 掌田津耶乃 ]

価格:3300円
(2025/10/6 12:15時点)
感想(2件)

動かして学ぶ!Laravel開発入門 (NEXT ONE) [ 山崎 大助 ]

価格:3300円
(2025/10/6 12:15時点)
感想(0件)

ディレクトリ構成

プロジェクトルートに以下のファイルを置きます。

project-root/
    − compose.yml
    − nginx/
        default.conf
    − src/
        index.php

あくまでこのブログ記事用の最小限の動く構成ですので実際の開発現場ではもう少し違うものになるでしょう。

LaravelでCRUDってなに?初心者でもすぐできるデータ操作入門 – ガ…

LaravelでCRUDってなに?初心者でもすぐできるデータ操作入門 – ガ…

Laravel初心者必見!CRUD(作成・読み取り・更新・削除)の基本をわかりやすく解説。データ操作を簡単に実装できる方法やEloquentの使い方まで丁寧に紹介。

Laravel初心者必見!CRUD(作成・読み取り・更新・削除)の基本をわかりやすく解説。データ操作を簡単に実装できる方法やEloquentの使い方まで丁寧に紹介。

compose.yml

下の内容をプロジェクトルートの compose.yml として保存してください。

services:
  php:
    image: php:8.4-fpm-alpine
    volumes:
      - ./src:/var/www/html

  nginx:
    image: nginx:latest
    ports:
      - "8989:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - ./src:/var/www/html:ro
    depends_on:
      - php

ポイント:ホストの ./src がコンテナ内の /var/www/html にマウントされます。ブラウザは http://localhost:8989 へアクセスします。

【超入門】Laravelの「Controller」とは?Webアプリの頭脳を…

【超入門】Laravelの「Controller」とは?Webアプリの頭脳を…

Laravel初心者必見!「web.phpがごちゃごちゃ…」そんな悩みを解決するコントローラーの使い方を、図解とコード例でやさしく解説。Webアプリの処理整理がスッキリ分かり、あなたも「頭脳」を作れるようになります!

Laravel初心者必見!「web.phpがごちゃごちゃ…」そんな悩みを解決するコントローラーの使い方を、図解とコード例でやさしく解説。Webアプリの処理整理がスッキリ分かり、あなたも「頭脳」を作れるようになります!

nginx/default.conf

nginxの基本設定です。ドキュメントルートを /var/www/html に向け、PHPはphpコンテナの9000番ポートに接続します。

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html;

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

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

    location ~ /.ht {
        deny all;
    }
}
 

サンプルPHP(src/index.php)

動作確認用のシンプルなファイルです。src/index.phpに保存してください。

<?php
    echo 'Hello World with php Docker!';

Laravelでセッション管理を理解する!初心者でもわかるログイン状態と一時…

Laravelでセッション管理を理解する!初心者でもわかるログイン状態と一時…

Laravel開発者が直面する「セッション」の疑問を解決します。初心者向けにセッションとクッキーの違い、データの保存・取得、ログイン機能の実装方法まで、図解とコードで分かりやすく解説。

Laravel開発者が直面する「セッション」の疑問を解決します。初心者向けにセッションとクッキーの違い、データの保存・取得、ログイン機能の実装方法まで、図解とコードで分かりやすく解説。

動かし方(コマンドをコピペで実行)

プロジェクトルートで以下を実行します。Docker DesktopやDocker Engineが事前にインストールされていることを前提とします。

$ docker compose up -d

ブラウザで http://localhost:8989 を開くと Hello World with php Docker!が表示されているはずです。

 

FAQ: 一通りよんで初心者がつまづきやすいところを避けましょう

DockerでPHP開発環境を構築するには何が必要ですか?

最低限必要なのは、Docker本体とDocker Composeです。これらがインストールされていれば、PHP・Apache・MySQLなどの環境をコンテナで構築できます。WindowsやMacの場合は、Docker Desktopをインストールするだけで準備が整います。

初心者でもDockerでPHP環境を作れる?

はい、可能です。Dockerは複雑そうに見えますが、設定ファイルをコピーして使えばすぐに動かせます。この記事ではコピペで使える構成を紹介しているので、初めての方でも安心して取り組めます。

Dockerで作ったPHP環境は本番でも使える?

基本的には開発環境として使うのが一般的です。ただし、設定を調整すれば本番環境にも応用できます。セキュリティやパフォーマンスの観点から、本番用には別途チューニングが必要です。

Docker Composeって何?使うメリットは?

Docker Composeは複数のコンテナをまとめて管理できるツールです。PHP・DB・Webサーバーなどを一括で起動・停止できるので、開発効率が大幅にアップします。設定はYAML形式で書かれます。

PHPのバージョンはどうやって指定するの?

Dockerfileやcompose.ymlの中で、使用したいPHPのバージョンを指定できます。例えば、Dockerfileで以下のように書けばPHP8.1を使えます。

FROM php:8.1-apache

MySQLとの連携はどうする?

compose.ymlに以下のように追加すればMySQLコンテナが立ち上がります。あとはアプリケーション側でここで書いたIDとパスワードをつかって接続するようにコードや環境変数を設定すればOK

mysql:
    image: mysql:latest
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: myapp
        MYSQL_USER: myappuser
        MYSQL_PASSWORD: myapppassword
    depends_on:
      - php

Docker環境でphpMyAdminは使える?

はい、phpMyAdminもコンテナで簡単に追加できます。MySQLと同じネットワーク内に配置すれば、ブラウザからデータベースを操作できます。compose.ymlにサービスを追加するだけでOKです。

Docker環境でエラーが出たときはどうすればいい?

まずはログを確認しましょう。PHPやApacheのログはコンテナ内にあります。以下のようにしてログを確認できます。

$ docker-compose logs php

それでも原因が分からない場合は、設定ファイルのスペルミスやポートの競合などを疑ってみるとよいです。

Laravelのディレクトリ構成を図解で解説!初心者でも迷わないプロジェクト…

Laravelのディレクトリ構成を図解で解説!初心者でも迷わないプロジェクト…

Laravel初心者向けに、ディレクトリ構成を図解と実例でわかりやすく解説!ルーティングやコントローラ、ビューの役割まで丁寧に説明。迷わず学習を始めたい方必見です。

Laravel初心者向けに、ディレクトリ構成を図解と実例でわかりやすく解説!ルーティングやコントローラ、ビューの役割まで丁寧に説明。迷わず学習を始めたい方必見です。

DockerでPHP開発環境をつくるまとめ

Dockerを活用したPHP開発環境の構築は、環境差異によるトラブルを回避し、安定したローカル開発を実現するための有効な手段です。特にDocker Composeを使えば、PHP・MySQL・Apacheなど複数のサービスをYAMLファイルで定義し、コマンド一つで起動・停止・構成変更が可能になります。これにより、環境構築の手間を大幅に削減でき、学習や検証に集中できるようになります。

本記事では、PHPのバージョン指定方法、MySQLとの接続設定、phpMyAdminの導入、ログの確認方法など、実際の開発で必要となる基本的な構成と操作をFAQ形式で整理しました。初心者がつまずきやすいポイントを事前に把握できるよう、具体的なコマンド例や設定例も掲載しています。

「Docker PHP コンテナ構築」「Docker Compose 開発環境」「PHP MySQL 連携設定」などの技術キーワードに関心がある方にとって、本記事は実践的なスタートガイドとなるはずです。まずはテンプレートをベースに、自分のプロジェクトに合わせたカスタマイズを試みることで、より深い理解とスキルの定着につながります。

 

PHPフレームワークLaravel入門第2版 [ 掌田津耶乃 ]

価格:3300円
(2025/10/6 12:15時点)
感想(2件)

動かして学ぶ!Laravel開発入門 (NEXT ONE) [ 山崎 大助 ]

価格:3300円
(2025/10/6 12:15時点)
感想(0件)