PHP

WindowsでDockerとWSL2を活用した高速PHP開発環境の構築手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Docker Desktop ダウンロードとインストール

Docker Desktop は公式サイトから最新版(2024/04 以降)を取得します。インストーラは Windows 10 2004 以上、または Windows 11 が対象です。古いバージョンでは WSL2 のサポートが不完全になるため、必ず最新の OS にアップデートしてから実行してください。

インストール手順

  1. Docker Desktop の公式ページ(https://www.docker.com/products/docker-desktop)へアクセスし Download for Windows をクリック。
  2. ダウンロードした Docker Desktop Installer.exe を実行し、ウィザードの指示に従います。
  3. 「Enable WSL 2」チェックは必ずオンにしてください。
  4. インストール完了後、Docker が自動で起動するか確認します(タスクトレイにクジラアイコンが表示されれば OK)。

ポイント:インストール中に Windows の再起動が求められた場合は必ず実行してください。再起動をスキップすると WSL2 が正しく有効化されません。


WSL2 バックエンドの有効化と Linux カーネル更新

WSL2 を利用するには以下 3 つの条件が必要です。

  1. OS のバージョン:Windows 10 2004(ビルド 19041)以降、または Windows 11。
  2. CPU 仮想化支援機能 が BIOS/UEFI で有効になっていること(Intel VT‑x / AMD‑SVM)。
  3. 「仮想マシンプラットフォーム」機能「Windows Subsystem for Linux」 の両方が有効化されていること。

BIOS/UEFI での仮想化有効化手順(概要)

手順 操作内容
1 PC を再起動し、メーカー独自のキー(Del, F2, Esc 等)で BIOS/UEFI に入る。
2 「Virtualization Technology」や「Intel VT‑x」などの項目を Enabled に設定。
3 設定保存後に再起動し、Windows が仮想化機能を認識できているか確認(PowerShell systeminfo の出力に “Hyper-V Requirements: VM Monitor Mode Extensions: Yes” が含まれる)。

WSL2 のインストール手順

管理者権限で PowerShell を開き、以下のコマンドを実行します。

注意wsl --install は Windows 10 2004 以降で利用可能です。古いバージョンの場合は Microsoft Store から手動で Ubuntu を取得してください。

インストールが完了したら Windows を再起動し、次のコマンドでバージョンを確認します。

Microsoft の公式サイトから Linux カーネル更新プログラムWSL2 Linux kernel update package)をダウンロードし、指示に従ってインストールしてください。これが不足すると「WSL 2 が有効になっていません」というエラーが発生します。


Docker Desktop のリソース割当と根拠

Docker Desktop は内部で仮想マシン(VM)を起動するため、CPU・メモリ・ディスク容量の割り当てが必要です。過不足は次のような影響を与えます。

リソース 過少の場合の影響 過多の場合の問題
CPU コンテナ起動が遅くなる、ビルド時間が長くなる ホスト側の他アプリがレスポンス低下
メモリ MySQL のバッファ不足でクラッシュ、Xdebug がメモリ不足になる Windows のページングが増えて全体的に遅くなる
ディスク イメージプルやビルド時に「no space left on device」エラー 不要な領域確保で SSD の寿命が縮む

推奨設定(プロジェクト規模別)

規模 CPU (コア) メモリ (GB) ディスク空き容量 (GB) 根拠
小規模 (個人学習、1〜2 コンテナ) 2 コア以上 4 GB(8 GB 推奨) 20 GB PHP + Apache のみであれば 2 コアでも問題なし。MySQL と Xdebug を同時に走らせるとメモリは最低 4 GB 必要
中規模 (チーム開発、3〜5 コンテナ) 4 コア以上 8 GB(12 GB 推奨) 30 GB DB のバッファプールやキャッシュが増えるためメモリを余裕で確保
大規模 (マイクロサービス、複数 DB/Cache) 6 コア以上 12 GB(16 GB 推奨) 50 GB+ 複数のデータベース・キューが同時稼働し、ビルドも頻繁に行うケース

設定は Docker Desktop → SettingsResourcesAdvanced から変更できます。変更後は必ず Docker を再起動してください。


VS Code と Remote‑Containers 拡張機能による開発環境構築(任意)

VS Code の Remote‑Containers 機能を使うと、エディタ側から直接コンテナ内に入って作業できます。以下では 最小構成 を例示しつつ、拡張機能のインストール手順も合わせて紹介します。

必要な拡張機能

拡張機能 用途
Remote - Containers コンテナ内で VS Code を実行
PHP Intelephense 高度なコード補完と型推論
PHP Debug (felixfbecker) Xdebug と連携したデバッグ

インストール方法:VS Code の拡張機能パネルで上記キーワードを検索し、Install をクリック。

devcontainer.json の雛形と解説(H3)

devcontainer 設定はプロジェクト直下の .devcontainer/devcontainer.json に配置します。以下は Docker Compose 方式の例です。

  • dockerComposeFile は配列なので、複数ファイルをマージできる点が便利です。
  • service に指定したコンテナが起動後に VS Code が接続します。

コンテナへシームレスに接続する手順(H3)

  1. Remote‑Containers: Open Folder in Container をコマンドパレット(Ctrl+Shift+P)で実行。
  2. プロジェクトフォルダを選択すると、VS Code が docker compose up 相当の処理を自動で走らせ、コンテナに接続します。
  3. 接続完了後はエディタ上のファイルがリアルタイムでコンテナと同期し、統合ターミナルも /var/www/html/src に位置付けられます。

プロジェクトフォルダ構成と Dockerfile / .dockerignore の作り方

コードと設定を整理すると、メンテナンス性が格段に向上します。ここでは 実務で広く採用されているレイアウト を示しつつ、.dockerignore の誤記修正ポイントも解説します。

推奨フォルダレイアウト(H3)

  • src はコンテナ起動時に マウント されるため、コード変更が即座に反映されます。
  • Docker 関連ファイルは docker/ に集約し、プロジェクトルートをすっきり保ちます。

Dockerfile の記述例(H3)

以下は公式 php:8.2-apache イメージをベースにした最小構成です。必要な拡張モジュールと Xdebug のオプションインストールを組み込んでいます。

正しい .dockerignore(H3)

.dockerignore はビルドコンテキストに含めたくないファイルを列挙しますが、Dockerfile と docker-compose.yml は必ず除外対象から外す 必要があります。誤って除外するとイメージ作成時にこれらのファイルが無視され、ビルドエラーになるためです。

ポイント.dockerignoredocker/ ディレクトリ内に置くと、ビルドコンテキストはプロジェクトのルート(context: .)になるため、上記パターンで問題ありません。


docker‑compose.yml による web・db・admin コンテナ定義と環境変数設定

Compose ファイル一つで PHP/MySQL/phpMyAdmin の 3 サービスを起動できます。以下は バージョン 3.9(Docker Desktop が推奨)で書いた例です。

Compose 全体像(H3)

設定のポイント(H3)

  • build.context はプロジェクトルートに設定し、Dockerfile の相対パスを明示的に指定しています。これにより docker compose build 時に .dockerignore が正しく適用されます。
  • depends_on でサービス起動順序を保証しますが、本番環境ではヘルスチェック(healthcheck:)を併用するとさらに安全です。
  • ポート番号 はローカルで競合しやすいので、プロジェクトごとに 8080/8081 のように変えても問題ありません。

コンテナ起動・確認手順とトラブルシューティング

Docker Compose の基本コマンドは docker compose(スペースあり)です。旧来の docker-compose はレガシー扱いとなっているため、以降はすべて docker compose 系列で統一します。

起動・停止・ログ確認(H3)

動作確認用スクリプト(H3)

1. PHP 情報表示 (src/info.php)

2. MySQL 接続テスト (src/db_test.php)

ブラウザで http://localhost:8080/info.phphttp://localhost:8080/db_test.php にアクセスし、期待通りの出力が得られれば環境構築は完了です。

Xdebug 連携と VS Code デバッグ設定(H3)

Docker イメージビルド時に --build-arg INSTALL_XDEBUG=true を付与すれば Xdebug が有効になります。VS Code 側の launch.json は次のように記述してください。

ブレークポイントを設定したら、ブラウザで XDEBUG_SESSION=1 クエリパラメータ(例:http://localhost:8080/index.php?XDEBUG_SESSION=1)を付与してアクセスします。

代表的なエラーと対策表(H3)

エラーメッセージ 主な原因 推奨対処
WSL2 が起動しない BIOS の仮想化が無効、または Windows 機能未有効 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform 後再起動
MySQL 初期化失敗 (Access denied) MYSQL_ROOT_PASSWORD が未設定・タイプミス docker‑compose.yml の env を見直し、docker compose down -v && docker compose up -d で再作成
ポート 8080 が競合 他プロセスが使用中(IIS、Node 等) netstat -ano | findstr :8080 で PID 確認 → 終了、または Compose のポートを変更
ファイル権限エラー Windows 側のフォルダが read‑only 共有になっている Docker Desktop 設定 → Resources → File Sharing にプロジェクトパスを追加
Xdebug 接続できない xdebug.modeoff、ポートブロック php.ini に xdebug.mode=debugxdebug.start_with_request=yes を追記し、ファイアウォールで 9003 開放

次のステップ

  1. 本手順をローカルで実行し、サンプルリポジトリ(GitHub: github.com/example/php-docker-starter)をクローンしてすぐに動作確認してください。
  2. 疑問点や改善要望は GitHub Issue に投稿すると、開発者が随時対応します。
  3. Docker・PHP の最新情報は公式ブログと本リポジトリの CHANGELOG.md を定期的にチェックしましょう。

参考リンク集

項目 URL
Docker Desktop ダウンロード https://www.docker.com/products/docker-desktop
WSL2 インストールガイド(Microsoft) https://learn.microsoft.com/windows/wsl/install
PHP:8.x‑apache イメージ公式ページ https://hub.docker.com/_/php
VS Code Remote‑Containers 拡張機能 https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers

以上で、Windows 環境における Docker Desktop + WSL2 + PHP 開発環境の構築手順は完了です。快適なローカル開発をぜひ体験してください!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-PHP