Maison >développement back-end >tutoriel php >Images Docker flexibles avec des variables d'environnement PHP INI

Images Docker flexibles avec des variables d'environnement PHP INI

Karen Carpenter
Karen Carpenteroriginal
2025-03-06 02:15:09949parcourir

Ce didacticiel montre comment utiliser les variables d'environnement pour configurer XDebug dans une application PHP 8.4 Dockrised, améliorer la flexibilité et éviter les paramètres INI codés en dur. Les paramètres XDebug du didacticiel précédent ont codé en dur, limitant la personnalisation du développeur. Cette approche permet à chaque développeur de gérer sa configuration XDebug sans modifier l'image Docker.

PHP 8.3 et les versions ultérieures prennent en charge les valeurs de secours dans les fichiers INI à l'aide de variables d'environnement, simplifiant la configuration. Auparavant, le fichier xdebug.ini ressemblait à ceci:

<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>

Cette méthode nécessite des mises à jour manuelles de fichiers INI pour chaque développeur, ce qui est inefficace. Une approche supérieure utilise des variables d'environnement:

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

Le stockage de ces variables d'environnement dans un fichier .docker.env non parrainé permet la personnalisation par développement. Alternativement, vous pouvez tirer parti des variables d'environnement directement dans le fichier xdebug.ini:

<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>

Le préfixe PHP_ évite de nommer les conflits et identifie clairement les variables d'environnement ini. XDEBUG_MODE et XDEBUG_CONFIG sont réservés pour la configuration Direct Xdebug.

Pour vérifier les paramètres, ajoutez phpinfo(); exit; à public/index.php ou utilisez les commandes suivantes dans le conteneur Docker:

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

Pour la personnalisation locale, ajoutez un env_file à votre docker-compose.yaml:

services:
  app:
    # ... other configurations ...
    env_file:
      - .docker.env

Créer .docker.env (Ajouter à .gitignore) et .docker.env.example Fichiers avec paramètres par défaut:

<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>

reconstruire le conteneur pour voir les modifications reflétées. Les paramètres mis à jour seront visibles dans phpinfo():

Flexible Docker Images with PHP INI Environment Variables

Cette méthode permet une configuration XDEBUG flexible sans modifier le processus de build d'image. Alors que les variables d'environnement Direct Xdebug offrent une simplicité, la méthode INI fournit un contrôle plus complet, car tous les paramètres ne sont pas configurables via XDEBUG_CONFIG. Choisissez l'approche la mieux adaptée à vos besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn