IDE
{ }
PhpStorm · Docker · Services · Logs
Docker Logs, Prozesse und Services
direkt aus PhpStorm nutzen

Wer für jeden docker logs-Aufruf das Terminal wechselt, verliert Zeit und Kontext. PhpStorm bringt eine vollständige Docker-Integration mit: Log-Streaming, Service-Steuerung, Prozess-Inspektion und Remote-Interpreter – alles ohne die IDE zu verlassen.

12 Min. Lesezeit Docker · Docker Compose · Remote Interpreter · Services Tool Window PhpStorm 2024.x · 2025.x

1. Warum Docker-Integration in der IDE statt im Terminal

Die klassische Arbeitsweise mit Docker sieht so aus: Ein Terminalfenster läuft permanent neben der IDE, mehrere docker logs -f-Prozesse laufen parallel, und sobald ein Problem auftritt, wechselt man zwischen IDE und Terminal hin und her. Der Kontextwechsel kostet nicht nur Zeit, sondern unterbricht den Gedankenfluss beim Debugging. Genau hier setzt die Docker-Integration von PhpStorm an.

PhpStorm bietet seit mehreren Versionen eine vollwertige Docker-Integration, die weit über ein einfaches Log-Viewer-Fenster hinausgeht. Container können gestartet, gestoppt und neugestartet werden, Logs werden in Echtzeit gestreamt mit Such- und Filterfunktionen, laufende Prozesse lassen sich inspizieren, und Shells können direkt aus der IDE geöffnet werden. Wer diese Integration konsequent nutzt, reduziert die Anzahl der Terminalfenster auf ein Minimum und arbeitet fokussierter.

Besonders in Projekten mit Docker Compose und mehreren Services – typisch für Magento 2, WordPress Multisite oder Symfony-Anwendungen – macht sich der Unterschied stark bemerkbar. Anstatt fünf parallele docker logs -f-Prozesse zu verwalten, sieht man alle Service-Logs strukturiert im Services Tool Window nebeneinander und kann in Sekunden zwischen ihnen wechseln.

2. Docker-Verbindung in PhpStorm einrichten

Die Einrichtung beginnt unter Settings → Build, Execution, Deployment → Docker. PhpStorm erkennt auf Linux und macOS automatisch den Unix-Socket unix:///var/run/docker.sock, der für die meisten Standardinstallationen korrekt ist. Bei Remote-Docker-Hosts oder TCP-Verbindungen trägt man die URL im Format tcp://hostname:2376 ein. Für TLS-gesicherte Verbindungen hinterlegt man Zertifikat, Schlüssel und CA direkt in der Konfiguration.

Nach dem Speichern der Verbindung zeigt PhpStorm einen grünen Verbindungsindikator. Im Services Tool Window (View → Tool Windows → Services oder Alt+8) erscheint unter dem Docker-Knoten die Verbindung mit allen laufenden Containern, verfügbaren Images und Netzwerken. Die Verbindungseinstellungen werden projektspezifisch gespeichert und können über das Settings Repository-Plugin mit dem Team geteilt werden.

Ein wichtiges Detail bei Mark Shust's Docker-Magento-Setup und ähnlichen Setups: Falls der Docker-Socket durch einen Proxy oder eine Bridge umgeleitet wird, muss die Socket-Pfadangabe entsprechend angepasst werden. Bei Rancher Desktop beispielsweise liegt der Socket häufig unter einem anderen Pfad als dem Standard. PhpStorm zeigt im Verbindungsdialog direkt an, ob die Verbindung erfolgreich war, und gibt bei Fehlern aussagekräftige Hinweise.

3. Das Services Tool Window: Überblick und Navigation

Das Services Tool Window ist das zentrale Werkzeug für die Docker-Integration. Es gliedert sich in mehrere Bereiche: Container zeigt alle laufenden und gestoppten Container mit Status, Image, Ports und Erstellungszeit. Images listet heruntergeladene Images mit Tags und Größen. Netzwerke und Volumes runden das Bild ab. Per Rechtsklick auf einen Container öffnet sich ein Kontextmenü mit allen wesentlichen Aktionen: Start, Stop, Restart, Remove, Logs anzeigen und Shell öffnen.

Für Docker Compose-Projekte gruppiert das Services Tool Window die Container nach Compose-Datei und Service-Namen. Der Compose-Knoten enthält eigene Aktionen wie "Up", "Down", "Pull" und "Build", die direkt auf die Compose-Datei wirken. Diese Strukturierung macht es einfach, in einem Projekt mit acht Compose-Services schnell den richtigen Container zu finden, ohne lange Listen von Container-IDs zu lesen.

Die Pinning-Funktion im Services Tool Window erlaubt es, häufig benötigte Container oder Compose-Projekte oben anzuheften. Per Drag-and-Drop lassen sich die Einträge umsortieren. PhpStorm merkt sich außerdem, welche Log-Tabs geöffnet waren, und stellt sie nach einem Neustart der IDE wieder her – ein kleines Detail mit großem praktischem Wert bei langen Debugging-Sessions.

4. Container-Logs live streamen und filtern

Ein Doppelklick auf einen Container oder ein Klick auf "Show Logs" öffnet einen dedizierten Log-Tab im Services Tool Window. Der Log-Stream läuft in Echtzeit, mit automatischem Scrolling zum Ende. Oben rechts gibt es eine Suchleiste, die den gesamten Log-Puffer durchsucht – mit Regex-Unterstützung. So kann man mitten in einem laufenden Log-Stream nach bestimmten Request-IDs, Error-Messages oder Zeitstempeln filtern, ohne den Stream zu unterbrechen.

Besonders praktisch: PhpStorm färbt Zeilen nach Log-Level automatisch ein, wenn das Format erkannt wird. Zeilen mit "ERROR" oder "CRITICAL" erscheinen rot, Warnings orange. Diese visuelle Unterscheidung beschleunigt die Orientierung in umfangreichen Logs erheblich. Über das Zahnrad-Icon lassen sich Optionen wie "Show timestamps", "Show stderr separately" und "Wrap lines" konfigurieren.

Für Projekte mit mehreren Services können mehrere Log-Tabs gleichzeitig geöffnet sein. PhpStorm verwaltet jeden als eigenen Tab im Services-Fenster, was direktes Nebeneinander-Monitoring ermöglicht. Die Logs können über "Save to File" in eine Datei exportiert werden – nützlich für Bug-Reports oder die Weitergabe an Kollegen ohne Zugriff auf den Docker-Host.


# docker-compose.yml — Structured logging for PhpStorm log parsing
version: "3.9"

services:
  php-fpm:
    image: markoshust/magento-php:8.4-fpm
    volumes:
      - .:/var/www/html
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "5"
        labels: "service=php-fpm,env=development"
    environment:
      PHP_IDE_CONFIG: "serverName=mironsoft-docker"

  nginx:
    image: markoshust/magento-nginx:1.24
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "5"

  mysql:
    image: mariadb:10.6
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "3"

5. Prozesse im Container inspizieren

Über den Reiter "Processes" im Services Tool Window zeigt PhpStorm eine Live-Ansicht aller laufenden Prozesse innerhalb des ausgewählten Containers – ähnlich wie docker top, aber interaktiv. Man sieht PID, Benutzer, CPU- und Speicherverbrauch sowie den vollständigen Befehl. Ein Klick auf "Kill Process" sendet SIGTERM oder SIGKILL direkt an den Prozess im Container, ohne das Terminal zu öffnen.

Diese Funktion ist besonders wertvoll, wenn PHP-FPM-Worker hängen oder ein Cron-Job den Container unter Last setzt. Anstatt mit docker exec php-fpm ps aux zu arbeiten, sieht man die Prozessliste live aktualisiert. Zombie-Prozesse, hängende Datenbankverbindungen oder unkontrolliert wachsende Worker-Pools werden sofort sichtbar. Im Debugging-Alltag spart das mehrere Schritte gegenüber dem rein terminalbasierten Workflow.

Eine ergänzende Funktion ist "Open Terminal" direkt aus dem Container-Kontextmenü. PhpStorm öffnet dann eine interaktive Shell im Container als neuen Tab im integrierten Terminal. Diese Shell läuft mit demselben Benutzer-Kontext wie der Container – ein wichtiges Detail, wenn Dateiberechtigungen oder Umgebungsvariablen eine Rolle spielen. Wer regelmäßig Shells in Containern öffnet, kann dies über eine dedizierte Run-Konfiguration noch weiter automatisieren.

6. Docker Compose Services steuern

PhpStorm erkennt Docker Compose-Dateien im Projekt automatisch und bietet direkte Integration im Services Tool Window. Über "Add Service → Docker Compose" wählt man die compose.yaml aus und konfiguriert optional ein Profil oder spezifische Services. Der Knoten erscheint dann im Services-Baum und zeigt alle definierten Services mit ihrem aktuellen Status an.

Die Aktionen "Compose Up", "Compose Down", "Compose Pull" und "Compose Build" sind per Rechtsklick auf den Compose-Knoten verfügbar. "Compose Up" startet alle Services im Hintergrund und öffnet automatisch Log-Tabs für alle gestarteten Container. "Compose Down" stoppt und entfernt Container, mit der Option "--volumes" auch die Volumes. Diese Aktionen entsprechen exakt den CLI-Befehlen, sind aber direkt in den Entwicklungsworkflow integriert.

Ein besonders nützliches Feature: Einzelne Services können über Rechtsklick auf den Service-Knoten neugestartet werden, ohne die gesamte Compose-Umgebung zu stoppen. Das ist in der Entwicklung häufig nötig – etwa wenn die PHP-FPM-Konfiguration geändert wurde oder ein Nginx-Reload erforderlich ist. PhpStorm stellt dabei sicher, dass abhängige Services nicht unterbrochen werden.


# .idea/workspace.xml — PhpStorm Docker Compose Run Configuration (auto-generated)
# This shows what PhpStorm stores when you configure Docker Compose services

<!--
<component name="RunManager">
  <configuration name="docker-compose: Up" type="docker-deploy" factoryName="docker-compose">
    <deployment type="docker-compose">
      <settings>
        <option name="sourceFilePath" value="compose.yaml" />
        <option name="services">
          <list>
            <option value="php-fpm" />
            <option value="nginx" />
            <option value="db" />
          </list>
        </option>
        <option name="removeOrphans" value="true" />
        <option name="forceRecreate" value="false" />
      </settings>
    </deployment>
  </configuration>
</component>
-->

# Equivalent CLI command PhpStorm executes:
# docker compose -f compose.yaml up -d php-fpm nginx db --remove-orphans

7. Remote PHP-Interpreter über Docker konfigurieren

Ein Remote PHP-Interpreter über Docker erlaubt es PhpStorm, PHP-Code direkt im Container auszuführen – für Tests, Linting und Code-Analyse. Die Konfiguration erfolgt unter Settings → PHP → CLI Interpreter → + → From Docker, Vagrant, VM, WSL. Man wählt den Docker-Verbindungstyp, dann das Image oder den Service aus der Compose-Datei. PhpStorm startet daraufhin einen temporären Container, liest die PHP-Version und installierten Extensions aus und speichert diese Informationen für spätere Nutzung.

Mit dem konfigurierten Remote-Interpreter führt PhpStorm composer-Befehle, PHPUnit-Tests und PHPStan-Analysen direkt im Container aus. Das bedeutet: keine manuelle PHP-Installation auf dem Host, keine Version-Konflikte, und die Tests laufen in exakt derselben Umgebung wie die Produktion. Run-Konfigurationen für PHPUnit können auf den Remote-Interpreter zeigen und Tests mit einem Klick starten.

Für Projekte wie Magento 2 ist die Remote-Interpreter-Konfiguration besonders wertvoll, weil Magento spezifische PHP-Extensions wie sodium, gd und bcmath erfordert. Ein lokal installiertes PHP ohne diese Extensions würde beim Ausführen von Magento-Tests sofort scheitern. Mit dem Docker-Interpreter stimmt die Extension-Konfiguration automatisch überein, weil dasselbe Image wie in der Entwicklungsumgebung verwendet wird.

8. Run-Konfigurationen mit Docker verbinden

PhpStorm Run-Konfigurationen lassen sich direkt mit Docker verbinden, sodass ein Klick auf "Run" oder "Debug" automatisch den Container startet, den Code ausführt und die Ausgabe in der IDE anzeigt. Unter "Add New Configuration → Docker → Docker Image" oder "Docker Compose" kann man Container-Start-Parameter, Umgebungsvariablen, Volumes und Ports konfigurieren. Diese Konfigurationen können als XML in das .idea/-Verzeichnis eingecheckt und mit dem Team geteilt werden.

Eine typische Run-Konfiguration für Magento 2 würde den PHP-FPM-Container referenzieren und bin/magento cache:flush oder bin/magento indexer:reindex ausführen. Statt im Terminal diese Befehle einzutippen, kann man sie als benannte Run-Konfigurationen speichern und über das Run-Menü oder Tastenkürzel aufrufen. PhpStorm zeigt die Ausgabe direkt im Run-Fenster an und kennzeichnet erfolgreiche oder fehlgeschlagene Ausführungen farbig.

Noch mächtiger wird das in Kombination mit dem Debugger: Eine Debug-Run-Konfiguration startet den Container mit aktiviertem Xdebug, wartet auf die IDE-Connection und pausiert automatisch an konfigurierten Breakpoints. Der komplette Debug-Workflow – Container starten, Breakpoint setzen, Request auslösen, Variablen inspizieren – läuft in einer einzigen IDE-Session ohne Terminal-Wechsel.


<?php
// PHP remote interpreter check — run inside PhpStorm terminal (Docker container)
// This shows how PhpStorm validates the interpreter configuration

// PhpStorm executes this automatically when configuring remote interpreter:
// docker run --rm markoshust/magento-php:8.4-fpm php -r "
//   echo PHP_VERSION . PHP_EOL;
//   echo implode(', ', get_loaded_extensions()) . PHP_EOL;
// "

// Expected output for Magento 2 compatibility:
// 8.4.x
// Core, date, libxml, openssl, pcre, zlib, filter, hash, json,
// mbstring, SPL, PDO, bcmath, calendar, ctype, curl, dom, exif,
// fileinfo, ftp, gd, gettext, intl, pdo_mysql, Phar, posix,
// readline, Reflection, session, SimpleXML, soap, sodium, sockets,
// standard, tokenizer, xml, xmlreader, xmlwriter, xsl, zip

// PhpStorm Run Config to flush Magento cache via Docker exec:
// Command: docker compose exec php-fpm bin/magento cache:flush
// Working dir: /var/www/html

9. IDE-Integration vs. Terminal im Vergleich

Die direkte Gegenüberstellung zeigt, wo PhpStorms Docker-Integration gegenüber dem reinen Terminal-Workflow punktet und wo das Terminal nach wie vor die bessere Wahl ist.

Aufgabe Terminal-Weg PhpStorm Docker-Integration Vorteil
Logs verfolgen docker logs -f container Services Window → Log-Tab Farbig, suchbar, kein Terminal-Wechsel
Container neustarten docker restart name Rechtsklick → Restart Kontextmenü, kein Tipp-Fehler beim Namen
PHP-Tests ausführen docker exec php phpunit Run Config mit Remote-Interpreter Ergebnisse in Test-Runner, Klick zu Fehler
Shell öffnen docker exec -it php bash Services → Open Terminal Direkt im IDE-Terminal, kein Extra-Fenster
Prozesse ansehen docker top container Services → Processes-Tab Live-Update, Kill-Button direkt verfügbar

Das Terminal bleibt die bessere Wahl für komplexe einmalige Befehle, Scripting und Situationen, in denen Pipe-Chains oder mehrere aufeinanderfolgende Befehle schneller getippt als konfiguriert sind. PhpStorms Docker-Integration glänzt bei wiederkehrenden Aufgaben im Entwicklungsalltag: Logs monitoring, Service-Management und das Ausführen von Tests und Analyse-Tools mit immer gleichen Parametern.

Mironsoft

Magento 2 Entwicklung mit professioneller Docker- und PhpStorm-Infrastruktur

Docker-Entwicklungsumgebung professionell aufsetzen?

Wir richten Docker-Umgebungen für Magento 2 ein, konfigurieren PhpStorm vollständig – von Remote-Interpreter bis Xdebug – und schulen euer Team im produktiven Umgang mit der IDE-Docker-Integration.

Docker Setup

Mark Shust Docker-Magento Konfiguration mit PhpStorm-Integration und Xdebug

IDE-Konfiguration

Remote-Interpreter, Run-Configs und Docker Services Window vollständig einrichten

Team-Onboarding

Einheitliche Entwicklungsumgebung für das gesamte Team dokumentieren und schulen

10. Zusammenfassung

Die Docker-Integration von PhpStorm ist kein Komfort-Feature, sondern ein ernstzunehmendes Produktivitätswerkzeug für den täglichen Entwicklungsworkflow. Das Services Tool Window zentralisiert Container-Verwaltung, Log-Monitoring und Prozess-Inspektion in einer einzigen, durchsuchbaren Oberfläche. Docker Compose-Projekte lassen sich ohne Terminal-Wechsel starten, stoppen und neubauen. Remote PHP-Interpreter führen Tests und Analyse-Tools direkt im Container aus und eliminieren Versions-Konflikte zwischen Host und Container.

Der größte Gewinn liegt im reduzierten Kontextwechsel. Wer nicht mehr zwischen IDE und Terminal hin- und herspringen muss, um Logs zu prüfen oder einen Container neuzustarten, bleibt im Entwicklungsfluss. Run-Konfigurationen speichern wiederkehrende Docker-Befehle als benannte Aktionen und machen sie per Tastenkürzel erreichbar. Für Teams ermöglichen eingecheckte .idea/-Konfigurationen eine einheitliche Entwicklungsumgebung ohne aufwändige Onboarding-Dokumentation.

Docker-Integration in PhpStorm — Das Wichtigste auf einen Blick

Verbindung einrichten

Settings → Build, Execution, Deployment → Docker. Unix-Socket wird automatisch erkannt. Services Tool Window mit Alt+8 öffnen.

Logs und Prozesse

Doppelklick auf Container öffnet Log-Tab mit Echtzeit-Streaming, Regex-Suche und automatischer Farbgebung nach Log-Level.

Remote-Interpreter

Settings → PHP → CLI Interpreter → Docker. PHPUnit, PHPStan und Composer laufen direkt im Container – keine lokale PHP-Installation nötig.

Run-Konfigurationen

Docker Compose Up/Down als Run-Config speichern, ins .idea/-Verzeichnis einchecken und im Team teilen für einheitliche Entwicklungsumgebung.

11. FAQ: Docker-Integration in PhpStorm

1Wie verbinde ich PhpStorm mit Docker?
Settings → Build, Execution, Deployment → Docker. Unix-Socket wird auf Linux/macOS automatisch erkannt. Services Tool Window mit Alt+8 öffnen.
2Kann PhpStorm Docker Compose direkt steuern?
Ja. Services Window → Add Service → Docker Compose. Compose Up, Down, Build per Rechtsklick. Einzelne Services separat neustartbar.
3Was ist ein Remote PHP-Interpreter?
PHP läuft direkt im Docker-Container. PHPUnit, Composer, PHPStan – alles im Container ohne lokale PHP-Installation. Konfiguration: Settings → PHP → CLI Interpreter → Docker.
4Wie streame ich Container-Logs in PhpStorm?
Doppelklick auf Container im Services Window → Log-Tab öffnet sich. Echtzeit-Streaming mit Regex-Suche und automatischer Farbgebung nach Log-Level.
5Mehrere Container-Logs gleichzeitig sehen?
Ja. Für jeden Container einen eigenen Log-Tab öffnen. Alle Tabs streamen gleichzeitig in Echtzeit im Services Tool Window.
6Shell in Container aus PhpStorm öffnen?
Services Window → Rechtsklick Container → Open Terminal. Öffnet interaktive Shell als Tab im integrierten Terminal mit korrektem Benutzer-Kontext.
7Docker-Socket wird nicht erkannt?
Bei Rancher Desktop oder Podman liegt der Socket an einem anderen Pfad. Mit 'docker context inspect' ermitteln und manuell unter Settings → Docker eintragen.
8Docker-Konfigurationen mit Team teilen?
Run-Configs in .idea/runConfigurations/ als XML einchecken. Verbindungseinstellungen sind lokal – Setup-Schritte in CLAUDE.md oder AGENTS.md dokumentieren.
9Prozesse im Container killen?
Services Window → Container → Reiter Processes. Alle Prozesse mit PID, CPU und Speicher live. Kill-Button sendet SIGTERM oder SIGKILL direkt.
10Funktioniert ohne Docker Desktop?
Ja. PhpStorm kommuniziert direkt über Socket oder TCP-API. Funktioniert mit Rancher Desktop, Podman und Remote-Docker-Hosts ohne Docker Desktop.