Debuggen mit xdebug und Docker

Basierend auf dem Tutorial Contao mittels Docker-Container einrichten möchte ich das Debuggen von PHP innerhalb von Docker-Container zeigen.

IP-Adresse auslesen

Zum Debuggen benötigen wir die lokale IP-Adresse. Diese können wir mittels ifconfig auslesen. Meist ist es der Standard-Adapter eth0. Für mein Tutorial benutze ich eine VM und finde meine IP-Adresse unter dem Adapter ens33:

docker-xdebug_1

Wir tragen die ausgelesene IP-Adresse in die docker-compose.yml ein:

docker-xdebug_2

...und lassen erneut alle Container neu erstellen - somit werden die Umgebungsvariablen neu gesetzt.

docker-compose build && docker-compose up

Verbindung zu xdebug

Innerhalb von PhpStorm öffnen wir die Settings (STRG + S) und tragen den Debug-Port 9001 in die Debug-Einstellungen ein:

docker-xdebug_3

Um anschließend den DBGp Proxy einzurichten:

docker-xdebug_4

Im nächsten Schritt wird die Verbindung zum PHP-FPM Interpreter hergestellt. Das findet ihr unter Languages -> PHP -> CLI Interpretor.

docker-xdebug_5

Es öffnet sich ein weiteres Fenster und wir können einen CLI-Interpreter hinzufügen. Wir wählen "From Docker, Vagrant, VM, Remote..."

docker-xdebug_6

und konfigurien von der Docker Compose den php-fpm Service.

docker-xdebug_7

Nach einem kurzen "Checking PHP Installation..." werden uns die ermittelten Einstellungen angezeigt:

docker-xdebug_8 docker-xdebug_9

Debuggen starten

Wir öffnen beispielsweise den Firefox-Browser und installieren uns das Plugin "Xdebug helper".

docker-xdebug_10

Nach der Installation legen wir den IDE-Key auf docker-xdebug fest. Wir wechseln auf https://docker-contao.local und schalten den xdebug-Connector an.

docker-xdebug_11 docker-xdebug_12

Im PhpStorm müssen wir auch nur noch auf "Start Listening for PHP Debug Connections" einschalten und einen Breakpoint im Quellcode setzen.

docker-xdebug_13

Nach einem Refresh im Browser bleibt der Debugger an der gewünschten Stelle stehen und wir können den Code debuggen.

docker-xdebug_14

Happy Coding!