Heim > Backend-Entwicklung > PHP-Tutorial > Flexible Docker -Bilder mit PHP INI -Umgebungsvariablen

Flexible Docker -Bilder mit PHP INI -Umgebungsvariablen

Karen Carpenter
Freigeben: 2025-03-06 02:15:09
Original
947 Leute haben es durchsucht

Dieses Tutorial zeigt, wie die Umgebungsvariablen verwendet werden, um XDEBUG in einer dockerisierten PHP 8.4 -Anwendung zu konfigurieren, die Flexibilität zu verbessern und hartcodierte INI -Einstellungen zu vermeiden. Die vorherigen Tutorial hartcodierte XDEBUG -Einstellungen und begrenzte Entwickleranpassung. Dieser Ansatz ermöglicht es jedem Entwickler, seine XDebug -Konfiguration zu verwalten, ohne das Docker -Image zu ändern.

Php 8.3 und spätere Versionen unterstützen Fallback -Werte in INI -Dateien mithilfe von Umgebungsvariablen und vereinfachen die Konfiguration. Zuvor sah die xdebug.ini Datei wie folgt aus:

<code>; build/php/conf.d/xdebug.ini file
[xdebug]
xdebug.mode = debug

xdebug.client_host = host.docker.internal

; Or use the host machine IP address:
; xdebug.client_host = 192.168.86.203

xdebug.start_with_request = yes</code>
Nach dem Login kopieren

Diese Methode erfordert manuelle INI -Dateiaktualisierungen für jeden Entwickler, der ineffizient ist. Ein überlegener Ansatz verwendet Umgebungsvariablen:

<code>services:
  app:
    # ... other configurations ...
    environment:
      XDEBUG_CONFIG: "client_host=0.0.0.0 start_with_request=yes"
      XDEBUG_MODE: "debug,develop"</code>
Nach dem Login kopieren

Speichern Sie diese Umgebungsvariablen in einer unversionierten .docker.env -Datei ermöglicht eine Anpassung des Entwicklers. Alternativ können Sie Umgebungsvariablen direkt in der Datei xdebug.ini direkt nutzen:

<code>; build/php/conf.d/xdebug.ini file
[xdebug]
xdebug.mode = ${PHP_XDEBUG_MODE:-debug,develop}

xdebug.client_host = ${PHP_XDEBUG_CLIENT_HOST:-host.docker.internal}

xdebug.start_with_request = ${PHP_XDEBUG_START_WITH_REQUEST:-trigger}</code>
Nach dem Login kopieren

Das Präfix PHP_ vermeidet die Benennung von Konflikten und identifiziert eindeutig INI -Umgebungsvariablen. XDEBUG_MODE und XDEBUG_CONFIG sind für die direkte xDebug -Konfiguration reserviert.

Um die Einstellungen zu überprüfen, fügen Sie phpinfo(); exit; zu public/index.php hinzu oder verwenden Sie die folgenden Befehle im Docker -Container:

$ docker compose up --build -d
$ docker compose exec app bash
$ php -i | grep xdebug\.start_with_request
Nach dem Login kopieren

Fügen Sie für die lokale Anpassung ein env_file zu Ihrem docker-compose.yaml:

hinzu
services:
  app:
    # ... other configurations ...
    env_file:
      - .docker.env
Nach dem Login kopieren

erstellen .docker.env (zu .gitignore) und .docker.env.example Dateien mit Standardeinstellungen hinzufügen:

<code>PHP_XDEBUG_MODE=debug

PHP_XDEBUG_CLIENT_HOST=host.docker.internal
# Or use your computer's local network IP
# PHP_XDEBUG_CLIENT_HOST=192.168.86.250

PHP_XDEBUG_START_WITH_REQUEST=trigger</code>
Nach dem Login kopieren

den Container neu aufbauen, um die Änderungen zu sehen, die sich widerspiegeln. Die aktualisierten Einstellungen sind in phpinfo():

sichtbar.

Flexible Docker Images with PHP INI Environment Variables

Diese Methode ermöglicht eine flexible XDebug -Konfiguration, ohne den Bildaufbauprozess zu ändern. Während Direkte -XDEBUG -Umgebungsvariablen Einfachheit bieten, bietet die INI -Methode eine umfassendere Kontrolle, da nicht alle Einstellungen über XDEBUG_CONFIG konfigurierbar sind. Wählen Sie den Ansatz, der für Ihre Bedürfnisse am besten geeignet ist.

Das obige ist der detaillierte Inhalt vonFlexible Docker -Bilder mit PHP INI -Umgebungsvariablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage