Docker for MacのコンテナでXdebugが使えなかったできなかった話

Dockerの新しい利用方法であるDocker for MacでXdebugができなかったという話です。

スポンサーリンク

概要

最近のDockerでは、VirtualBoxなどの仮想化ソフトを使ってコンテナを実行するDocker Toolboxではなく、仮想化ソフトも含めたDocker for MacやDocker for Windowsなどがリリースされています。

今回、このDocker for Macを使ってコンテナを作成し、そこでPHPのWebアプリケーションを実行してXdebugを使ってデバッグをしようとしたのですが、うまくいきませんでした。

環境

今回の環境です。

  • OS: OS X EI Capitan
  • Docker: Docker for Mac
  • IDE: PhpStorm

なぜうまくいかないのか

今まではPHPのデバッグをする側とは別のIPアドレスの振られた仮想マシン上でDockerを実行していました。

しかし、Docker for Macではデバッグをするのと同じIPアドレスを使ってDockerを実行します。

xdebugを使う上では、ここの部分がネックとなっていて、リモート上でxdebugを使う場合リモートとデバッグをする端末で両方設定と実行しておく必要があります。

そして、実行時にポートを開放するのですが、コンテナと実機のIPアドレスが同じであるためにポートが競合します。

なので、デバッグをするためにはこのポートの競合をしないようにする必要があるのですが、私が調べた限りこの競合を回避する方法がありませんでした。

このようなことから結果的に、Docker for Macとxdebugを使ったデバッグができませんでした。

どのようなことをしたか

ここからは、色々と調べた結果を書いていきます。

  • Dockerのコンテナを実行するための環境は、仮装環境なのでIPアドレスが割り当てられているのではないか?
    • そもそも割り当てられていないようだった。
  • Dockerのコンテナが仮装環境なのでIPアドレスが割り当てられているのではないか?
    • 割り当てられているようだが、うまく接続できなかった。

最後に

最終的に、できないという結論出すまでに丸一日かかりました。

今後、できるようにDockerが改良されたり、私が見落としている方法でデバッグする方法を誰かが見つけてくれないかな……

スポンサーリンク

シェアする

フォローする