PhpStormの「CLI Interpreter」でDocker Composeのコンテナが選択できないトラブルの解決法

DockerDocker

はじめに

PhpStormには、Dockerコンテナ内のPHPをリモート実行させるためのRemote Interpreterという機能があります。

今回、Docker Desktop WSL 2をインストールした際、
PhpStormのRemote Interpreterの設定でDocker Compose経由でPHPを指定できないというトラブルが発生しました。

本記事ではその症状の原因と解決方法をまとめます。

結論

先に原因を述べると、「Docker Compose V2 (beta)が有効になっていたため」でした。

Docker Desktop WSL 2 の設定で 「Use Docker Compose V2」 チェックボックスをONにしていたため、PhpStorm未対応のバージョンがインストールされてしまったのだと思われます。

「Use Docker Compose V2」 チェックボックスをOFFにしたところ問題は解決しました。

症状について

Remote Interpreterを利用してDocker Compose経由でPHPを利用するためには、
PhpStormの設定画面を開き「CLI Interpreter」からPHPの設定されたコンテナを選択します。

このときに、Docker ComposeでService(コンテナ)を選択しようとしたら、対象のコンテナが選べずnetworks、servicesなどを選ぶようになってしまいました。

また、右上のプルダウンから開ける「Run/Debug Configurations」画面でも、docker-composeの設定でServicesを指定すると「”app” service doesnt exist in the specified docker-compose files」のようにエラーが出てしまいます。

なお、今回使用した「docker-compose.yml」はこちらです

version: "3.9"

services:
  app:
    image: php:8.0-fpm-buster

(※確認が目的なので、簡単なものにしています)

Serviceで「app」を指定できないためPHPを読み込むことも出来ず、Docker Compose経由で利用出来ない状況でした。

補足:PHP Remote Interpreterの設定方法

リモート PHP インタープリターの構成 | PhpStorm ドキュメント
リモート PHP インタープリターという用語は、リモートホストまたは仮想環境にインストールされた PHP エンジンを指します。リモート PHP インタープリターという用語は、コンピューターにインストールされているローカル PHP インタープリターの対義語として使用されます (ローカル PHP インタープリターの構成を参...

上記リンク内の「Docker Compose」タブを閲覧してください。

発生したときのバージョン情報

  • Docker Desktop WSL 2
    • 3.5.2
  • PhpStorm
    • 2021.2
  • Windows 10
    • バージョン:20H2
    • ビルド:19042.1151

解決方法

原因は「Docker Compose V2 (beta)が有効になっていたため」でした。

どうやら、Docker Desktop WSL 2をインストールするときに、「Use Docker Compose V2」のチェックを付けていたようでした。

解決するためにはDocker Desktop WSL 2の設定から、

Docker Desktopの設定画面を開き、「Experimental Features」タブ内の「Use Docker Compose V2」のチェックを外します。

その後、右下の「Apply & Restart」を押してDockerを再起動すればOKです。

なお、Docker Compose V2が有効になっているかどうかはターミナルからdocker-composeのバージョンを調べることで確認できます。

$ docker-compose --version
Docker Compose version v2.0.0-beta.6

おわりに

今回のトラブルはDocker Compose V2(β版)がインストールされたことによる不具合でした。

Docker Compose V2はまだβ版のため、色々不具合も起こっているようです。
今回の件は、PhpStormがこのバージョンに対応していなかったためと思われます。

Docker Compose V2 はデフォルトでOFFだったと思うのですが、同様のトラブルが起きた場合は参考にしてみてください。

コメント

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