XDebug optional in Docker installieren

Manchmal stolpere ich über Docker-Setups, die Dinge installieren. Auch Dinge wie Dev-Dependencies (XDebug allem voran). Nun habe ich mich gefragt, ob man das vermeiden kann.

Hier ein Ansatz dazu:

ARG XDEBUG_ENABLED=false

RUN if [[ $XDEBUG_ENABLED = true ]];  \
  then apk add --no-cache linux-headers && pecl install xdebug && docker-php-ext-enable xdebug;  \
  else echo 'Build without XDEBUG';  \
fi

Übersetzt heißt das: Prüfe, ob das Build-Argument XDEBUG_ENABLED auf true gesetzt ist. Falls ja, installiere XDebug. Andernfalls teile mit, dass XDebug nicht installiert wurde.

Kurz gesagt, es bietet die Flexibilität, XDebug bei Bedarf während des Builds zu aktivieren, ohne es standardmäßig zu installieren.

Gesteuert wird das Ganze via Build-Argument, z. B.:

docker build --build-arg XDEBUG_ENABLED=true -t my-php-app .

Oder via Docker Compose:

services:
    ...
    build:
        ...
        args:
            XDEBUG_ENABLED: true

Fazit

Die Lösung ist für Docker-Profis vermutlich ein No-Brainer. Für mich eröffnet es eine neue Welt.

Auch hier gilt: Es führen viele Wege nach Rom. Mir persönlich waren zwei Dinge wichtig:

  1. Einfachheit – Es sollte verständlich sein, was passiert und wo es passiert.
  2. Konfigurierbarkeit – Es sollte explizit möglich sein, XDebug zu installieren oder nicht, z. B. für Coverage oder Profiling/Tracing.

Und das sehe ich hier.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert