Dev-Container in PhpStorm: Isolierte KI-gestützte Entwicklung mit reproduzierbaren Entwicklungsumgebungen

Start » Blog » Dev-Container in PhpStorm: Isolierte KI-gestützte Entwicklung mit reproduzierbaren Entwicklungsumgebungen

KI-Agenten können heute eigenständig Code schreiben, Dateien anlegen, Abhängigkeiten installieren und Anwendungen ausführen. Genau deshalb sollten sie nicht direkt auf dem Hostsystem arbeiten. Dev-Container bieten eine isolierte Entwicklungsumgebung, in der KI-generierter Code sicher erstellt, getestet und ausgeführt werden kann, ohne das eigentliche Betriebssystem oder andere Projekte zu beeinflussen.

Wichtig ist dabei: Ein Dev-Container ersetzt keine vollständige Sicherheitsumgebung. Die Isolation basiert auf Docker und den konfigurierten Berechtigungen. Für besonders sensible Umgebungen sollten zusätzlich passende Sicherheitsmaßnahmen wie eingeschränkte Zugriffe, getrennte Benutzerkonten oder dedizierte Entwicklungsumgebungen berücksichtigt werden.

Neben der zusätzlichen Sicherheit bieten Dev-Container einen weiteren entscheidenden Vorteil: Sie ermöglichen reproduzierbare Entwicklungsumgebungen. Alle Werkzeuge, Laufzeitumgebungen und Abhängigkeiten werden gemeinsam mit dem Projekt definiert. Dadurch arbeiten alle Entwickler und auch KI-Agenten unter identischen Bedingungen, unabhängig vom Betriebssystem oder der lokalen Konfiguration.

In diesem Artikel zeige ich dir, wie du Dev-Container in JetBrains PhpStorm einrichtest, welche Voraussetzungen dafür erforderlich sind und wie du damit eine sichere Umgebung für KI-gestützte Entwicklung schaffst.

Dev-Container am Beispiel von WordPress

In diesem Tutorial erstellen wir einen Dev-Container für die WordPress-Entwicklung. Das Vorgehen lässt sich jedoch problemlos auf andere Technologie-Stacks wie C#/.NET, Java, PHP-Frameworks wie Laravel oder Symfony sowie Node.js, JavaScript oder Python übertragen.

Der Dev-Container enthält alle für das Projekt benötigten Komponenten und bildet eine abgeschlossene Entwicklungsumgebung. Führt ein KI-Agent Befehle aus, installiert Pakete oder erzeugt Dateien, geschieht dies innerhalb des Containers und nicht direkt auf dem Hostsystem. Gleichzeitig profitieren auch Entwickler von einer reproduzierbaren Umgebung, die den Einstieg neuer Teammitglieder vereinfacht und Konfigurationsunterschiede vermeidet.

Architektur des Entwicklungsaufbaus: PhpStorm und KI-Agenten arbeiten innerhalb des Dev-Containers. Die Verbindung zur Datenbank erfolgt über ein gemeinsames Docker-Netzwerk.
Architektur des Entwicklungsaufbaus: PhpStorm und KI-Agenten arbeiten innerhalb des Dev-Containers. Die Verbindung zur Datenbank erfolgt über ein gemeinsames Docker-Netzwerk.

Für einen Dev-Container werden in der Regel zwei Dateien benötigt:

.devcontainer/devcontainer.json

{
  "name": "WordPress Plugin Dev",
  "build": {
    "dockerfile": "./Dockerfile",
    "context": ".."
  },
  "runArgs": [
    "--network=my-network"
  ],
  "service": "dev",
  "workspaceFolder": "/w",
  "workspaceMount": "source=${localWorkspaceFolder}/wordpress/wp-content/plugins,target=/w,type=bind",
  "mounts": [
    "source=${localWorkspaceFolder}/weiteres-verzeichnis,target=/ww,type=bind",
    "source=composer-cache,target=/home/vscode/.composer,type=volume"
  ],
  "customizations": {
    "jetbrains": {
      "backend": "PhpStorm",
      "plugins": [
        "com.github.copilot"
      ],
      "vmoptions": [
        "-Xmx4g"
      ]
    }
  }
}

Die Datei devcontainer.json beschreibt die Entwicklungsumgebung. Hier werden unter anderem das Dockerfile, Portfreigaben, Umgebungsvariablen sowie IDE-spezifische Einstellungen definiert.

Ein praktischer Vorteil ist, dass sich benötigte IDE-Erweiterungen direkt über den Dev-Container mitinstallieren lassen. Dazu gehört beispielsweise auch das Plugin für GitHub Copilot. Dadurch entfällt die manuelle Installation auf jedem Entwicklungsrechner, und alle Teammitglieder arbeiten von Anfang an mit derselben Konfiguration. Das spart Zeit, reduziert Einrichtungsaufwand und sorgt für eine konsistente Entwicklungsumgebung.

Ich halte die Verzeichnispfade im Container bewusst möglichst kurz (in diesem Beispiel /w). Der Grund dafür ist der geringere Kontextverbrauch bei der Arbeit mit KI-Assistenten und Coding-Agenten.

Dateipfade werden von KI-Agenten häufig in Kontextinformationen, Tool-Aufrufen, Fehlermeldungen und Diff-Ausgaben verarbeitet. Lange, sich wiederholende Pfadangaben verbrauchen dabei zusätzliche Tokens, die dann nicht für die eigentliche Entwicklungsaufgabe zur Verfügung stehen. Kurze Pfade helfen somit, das verfügbare Kontextfenster effizienter zu nutzen.

Über runArgs wird der Dev-Container mit dem bestehenden Docker-Netzwerk my-network verbunden. Dadurch kann er auf Dienste wie die WordPress-Datenbank zugreifen, wenn der Datenbank-Container sich ebenfalls in diesem Netzwerk befindet.

.devcontainer/Dockerfile

FROM mcr.microsoft.com/devcontainers/php:8.5-trixie

# Install required tools
RUN apt-get update && apt-get install -y \
    mariadb-client \
    gettext \
    unzip \
    zip \
    subversion \
    libmariadb-dev \
    && docker-php-ext-install mysqli pdo pdo_mysql \
    && rm -rf /var/lib/apt/lists/*

# Install wp-cli
RUN curl -fsSL https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
    -o /usr/local/bin/wp \
    && chmod +x /usr/local/bin/wp

# Copy xdebug.ini for debugging inside IDE
COPY .devcontainer/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

Das Dockerfile legt fest, wie die Containerumgebung aufgebaut wird. Es definiert das Basis-Image sowie alle benötigten Werkzeuge, Laufzeitumgebungen und Pakete. Dadurch steht sowohl Entwicklern als auch KI-Agenten jederzeit dieselbe, reproduzierbare Entwicklungsumgebung zur Verfügung.

Im Beispiel wird bewusst ein festes PHP-Basisimage verwendet, damit sich die Entwicklungsumgebung reproduzierbar aufbauen lässt.

Einrichtung in einer IDE am Beispiel von Jetbrains PhpStorm

Nachdem der Dev-Container konfiguriert wurde, kann er direkt in PhpStorm geöffnet werden.

Benötigte Plugins

Für die Arbeit mit Dev-Containern werden die folgenden Plugins benötigt:

PhpStorm-Plugins für Dev-Container

Dev-Container öffnen

Starte PhpStorm und wähle im Willkommensfenster den Eintrag Dev Containers aus.

PhpStorm Dev-Container öffnen

Anschließend klickst du auf New Dev Container.

PhpStorm Dev-Container bauen

Im nächsten Schritt wählst du das Projekt mit der .devcontainer-Konfiguration aus. PhpStorm erstellt den Container, baut bei Bedarf das Docker-Image und startet anschließend die Entwicklungsumgebung. Je nach Projektgröße und Internetverbindung kann dieser Vorgang einige Minuten dauern, da zunächst alle benötigten Images und Abhängigkeiten heruntergeladen werden.

Arbeiten im Dev-Container

Nach dem erfolgreichen Start verbindet sich PhpStorm automatisch mit der Entwicklungsumgebung im Container. Von diesem Zeitpunkt an werden Terminalbefehle, Debugging, Tests und auch KI-Agenten direkt innerhalb des Containers ausgeführt und nicht auf dem Hostsystem.

Was passiert beim Öffnen eines Dev-Containers?

Ein Dev-Container verschiebt nicht nur die Laufzeitumgebung einer Anwendung in einen Container, sondern die komplette Entwicklungsumgebung. PhpStorm arbeitet dabei über Remote Development direkt mit dem Container zusammen.

Das bedeutet: Nicht nur die Anwendung selbst läuft im Container, sondern auch die Entwicklungswerkzeuge. Terminal, Debugger, Composer, PHPUnit, Git und weitere Tools werden innerhalb dieser Umgebung ausgeführt und verwenden genau die Versionen und Konfigurationen, die im Dev-Container definiert wurden.

Für den Entwickler fühlt sich die Arbeit dabei nahezu identisch an wie bei einer lokalen Installation. Der Unterschied ist, dass alle Aktionen innerhalb der isolierten Umgebung stattfinden.

Der laufende Dev-Container lässt sich anschließend jederzeit über die Remote-Entwicklungsansicht verwalten, neu starten oder erneut öffnen.

PhpStorm: Entwickeln im Dev-Container
PhpStorm arbeitet innerhalb des Dev-Containers. Terminal, Debugging und Entwicklungswerkzeuge werden in der Containerumgebung ausgeführt.

Warum Remote Development bei Dev-Containern entscheidend ist

Gerade beim Einsatz von KI-Agenten ist dieser Ansatz entscheidend. Ein KI-Agent, der Code erzeugt, Dateien verändert oder Befehle ausführt, arbeitet nicht direkt auf dem Hostsystem, sondern innerhalb der definierten Containerumgebung.

Dadurch können Abhängigkeiten installiert, Tests ausgeführt oder generierter Code überprüft werden, ohne die lokale Entwicklungsumgebung oder andere Projekte zu beeinflussen.

Gleichzeitig bleibt die Entwicklungsumgebung reproduzierbar: Die vollständige Konfiguration befindet sich im Projekt und kann von anderen Entwicklern oder in automatisierten Prozessen identisch wiederhergestellt werden. Damit verbindet der Dev-Container zwei wichtige Anforderungen moderner Softwareentwicklung: eine isolierte Arbeitsumgebung für KI-gestützte Entwicklung und eine konsistente Basis für das gesamte Team.

Fazit

Dev-Container bieten eine praktische Grundlage für moderne KI-gestützte Entwicklung. KI-Agenten können innerhalb einer definierten Umgebung arbeiten, ohne direkt auf das Hostsystem zugreifen zu müssen. Gleichzeitig erhalten Entwickler eine reproduzierbare Umgebung, die sich einfach versionieren, teilen und wiederherstellen lässt.

In Kombination mit PhpStorm und Remote Development entsteht damit ein Entwicklungsworkflow, der Sicherheit, Konsistenz und Produktivität miteinander verbindet.