こんにちは!開発環境アーキテクトの先輩です。
毎日のコーディング、お疲れ様です。「自分のPCにはPHPを入れていないのに、チーム全員が同じバージョン・同じ拡張機能で開発できる」「本番環境と全く同じコンテナ上で、ローカルと同じようにステップ実行できる」――そんな理想的な開発環境、作ってみたくありませんか?
今回は、世界最高峰のPHP IDEであるPhpStormと、コンテナ技術のデファクトスタンダードであるDockerを完璧に連携させ、環境構築を自動化・効率化する手法を徹底解説します。
「Dockerってなんだか難しそう」「IDEとの連携設定でいつも挫折する……」そんな初心者の方こそ大歓迎です。この記事を読み終える頃には、あなたの開発ライフは劇的に、そして圧倒的に快適になっているはずです。
—
なぜ PhpStorm × Docker なのか?(本質的メリット)
従来の開発では、ローカルのOS(MacやWindows)に直接PHPやComposerをインストールしていました。しかし、これには大きなデメリットがあります。
- プロジェクトAは「PHP 8.1」、プロジェクトBは「PHP 8.3」が必要な場合、ローカル環境の切り替え地獄に陥る。
- 「私の環境では動くのに、本番サーバー(Linux)ではエラーになる」という、いわゆる「環境差異の呪い」が起きる。
これを解決するのが Docker + PhpStorm Remote Interpreter(リモートインタプリタ) です。
PhpStormからDockerコンテナ内のPHPを直接「自分の手足」のように操作できるようにすることで、ローカルPCを汚さず、本番完全一致のサンドボックス環境で、IDEの強力な補完やデバッグ機能をそのまま使えるようになります。これが現代のWeb開発における最強のアーキテクチャです。
—
1. 開発環境の全体像を把握する
まずは、今回構築するシステムの設計図を頭に入れましょう。
[あなたのPC (PhpStorm)]
│
│ (内部的にDocker API経由で通信)
▼
[Docker Desktop]
├─ appコンテナ (PHP 8.3 + Xdebug + Composer)
└─ webコンテナ (Nginx) ※今回はシンプルにPHP単体+内蔵サーバーから開始します
今回は、最短かつ最も確実なステップを踏むため、Docker Compose を使ってPHPの実行環境を定義し、それをPhpStormに読み込ませます。
—
2. プロジェクトの土台を作る(ファイル配置と設定)
適当な作業ディレクトリ(例: `my-php-project`)をローカルPC上に作成し、その直下に以下の2つのファイル(設定コード)を配置してください。
① `docker-compose.yml` (コンテナの設計図)
このファイルは、Dockerに対して「どんなOSやPHPのバージョンを使って、どのフォルダを同期させるか」を指示する設計図です。
version: ‘3.8’
services:
app:
# 公式のPHP 8.3(CLI版)イメージを使用します
image: php:8.3-cli
container_name: phpstorm_docker_app
working_dir: /var/www/html
volumes:
# ローカルのプロジェクトディレクトリを、コンテナ内の /var/www/html にリアルタイム同期
- ./:/var/www/html
# コンテナが即座に終了しないよう、常時待機(or シェル実行)させておきます
command: php -S 0.0.0.0:8000 -t /var/www/html
ports:
- “8000:8000”
② `Dockerfile` (もし拡張機能をカスタムしたい場合※今回は参考)
今回は公式イメージ(`php:8.3-cli`)をそのまま使いますが、実務ではComposerを入れたりします。今回は簡略化のため、上記の `docker-compose.yml` だけでも動作するように設計しています。
—
3. PhpStormにDockerを接続する
ここからが本番です。PhpStormに「Dockerの存在」を教え込みます。
1. PhpStormを開き、[Settings / Preferences] (Windowsは `Ctrl + Alt + S`、Macは `Cmd + ,`)を開きます。
2. 左メニューから [Build, Execution, Deployment] > [Docker] を選択します。
3. 画面上の [+](追加ボタン) を押し、接続方法を選択します:
- Mac / Linux: `Docker for Mac` もしくは `Unix socket`
- Windows: `Named pipes` もしくは `WSL`
4. 接続に成功すると、画面下に “Connection successful” と緑色の文字が表示されます。これでIDEとDockerのパイプラインが繋がりました。
—
4. 魔法の機能:Remote Interpreter(リモートインタプリタ)の設定
いよいよ、PhpStormに「コンテナの中にあるPHPを使いなさい」と設定します。
1. 設定画面(Preferences)から、[PHP] セクションを開きます。
2. [CLI Interpreter] の横にある […](詳細ボタン) をクリックします。
3. 左上の [+](追加ボタン) を押し、[From Docker, Vagrant, VM, SSH…] を選択します。
4. 以下のように設定します:
- Connection: 先ほど設定したDockerを選択
- Service: `app` (`docker-compose.yml` で定義したサービス名)
- PHP executable: 自動で `php` が検出されます
5. [OK] を押して保存します。
これで、PhpStormがコンテナ内のPHPのバージョン(PHP 8.3.x)や、インストールされている拡張機能を自動検出し、ローカル環境のように認識してくれます!
—
5. 精度高い HelloWorld 的な動作確認
設定が正しく機能しているか、実際にコードを書いて検証してみましょう。
① プロジェクトに `index.php` を作成する
プロジェクトのルートディレクトリに、以下の内容を書いた `index.php` を作成します。PhpStormの強力な補完が、コンテナ内のPHPの仕様に基づいてサクサク効くことに感動するはずです。
Hello, PhpStorm & Docker World!
“;
// 現在動作しているPHPのバージョンと、実行環境(コンテナ内か)を確認
echo “
Running on PHP Version: ” . phpversion() . “
“;
echo “
Server Software / Host: ” . php_uname(‘n’) . “
“;
② ターミナルからコンテナを起動する
PhpStormの下部にある [Terminal] タブを開き、以下のコマンドを実行します。
Docker Composeを使ってバックグラウンドでコンテナをビルド・起動
docker-compose up -d –build
【実行ログのイメージ】
[+] Building 1.2s (9/9) FINISHED
=> [internal] load build definition from Dockerfile
…
[+] Running 2/2
✔ Network my-php-project_default Created
✔ Container phpstorm_docker_app Started
③ ブラウザでアクセスして確認
`docker-compose.yml` でポート `8000` をフォワードしているため、お使いのブラウザで以下のURLにアクセスしてください。
👉 `http://localhost:8000/index.php`
画面に以下のように表示されれば、環境構築の自動化は大成功です!
> Hello, PhpStorm & Docker World!
> Running on PHP Version: 8.3.x
> Server Software / Host: (コンテナIDやホスト名)
—
現場のプロからのアドバイス:さらに開発効率を上げるために
おめでとうございます!これで「ローカルにPHPをインストールしていないのに、Dockerコンテナ上でコードが動き、PhpStormがそれを完全にサポートする」という、モダンで美しい開発環境が手に入りました。
この環境の真価は、ここからさらに発揮されます。
- Composerの連携: PhpStormのSettingsからComposerのパスをDocker(Remote Interpreter)に向ければ、IDEのUIからポチポチするだけで、コンテナ内にライブラリ(LaravelやSymfonyなど)をインストールできます。
- Xdebugの有効化: コンテナ側のPHPにXdebugを組み込めば、PhpStorm側でブレークポイントを置くだけで、ブラウザからのリクエストをパッチとキャッチしてステップ実行できるようになります(もう `var_dump` とお別れです)。
「環境構築に数日かかる」という無駄なストレスから解放され、あなたがいちばん集中したい「最高のコードを書くこと」に没頭できる時間を、このPhpStorm × Docker環境が必ずや約束してくれます。
毎日のコーディングを、もっとスマートに、もっと楽しく。ぜひ明日からの開発に取り入れてみてください!