web-dev-qa-db-fra.com

Le débogage à distance avec XDebug depuis l'intérieur d'un conteneur Docker ne fonctionne pas

J'essaie de configurer un environnement AMP docké et je ne parviens pas à faire fonctionner le débogueur distant. Ma configuration est la suivante:

J'ai un conteneur de base de données qui exécute MySQL qui fonctionne comme un charme. J'ai construit une image Docker 'phpmysqli' avec le fichier Docker suivant

FROM php:Apache

RUN docker-php-ext-install mysqli mbstring

# zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
RUN pecl install xdebug
RUN echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> /usr/local/etc/php/php.ini
RUN touch /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini;

RUN echo 'date.timezone = Europe/Berlin' > /usr/local/etc/php/conf.d/date.ini

J'appelle

docker run --rm -ti  --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db  phpmysqli

Après ce phpinfo, respectivement php -i montre que xdebug 2.3.2 est opérationnel.

Ensuite, je configure un serveur dans IntelliJ IDEA appelé "Docker" avec l'hôte 127.0.0.1, le port 8080 et le débogueur Xdebug. J'ai configuré le mappage de chemin analogue au mappage de volume dans l'instruction d'exécution du menu fixe.

Dans les paramètres PHP-> Debug, j'ai vérifié que j'utilisais le port 9000 pour les connexions entrantes, que j'accepterais les connexions externes et que je n'ignorerais pas les connexions de serveurs non enregistrés.

Après cela, j'ai également créé une nouvelle configuration de débogage à distance PHP appelée Docker. Le serveur est Docker, l'identifiant de session est XDEBUG_IDEA.

Je peux appeler des fichiers PHP sur le conteneur, je peux me connecter à la base de données via le lien ... mais pour une raison quelconque, rien ne se produit lorsque je tente de démarrer une session de débogage. J'ai essayé d'utiliser un cookie (et oui, j'ai défini XDEBUG_IDEA comme identifiant de session dans xdebug helper). J'ai essayé d'envoyer XDEBUG_SESSION_START=XDEBUG_IDEA comme GET...

Pouvez-vous des gens intelligents me dire ce que j'ai manqué?

Vous pouvez essayer avec cette configuration. La compilation php-Apache fournit deux méthodes pour compiler et activer le module php . Il est préférable d'utiliser docker-php-ext-enable xdebug pour définir la configuration de fichier correcte.

FROM php:5.4-Apache

# Enable and configure xdebug
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN sed -i '1 a xdebug.remote_autostart=true' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_mode=req' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_handler=dbgp' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_connect_back=1 ' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_port=9000' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_Host=127.0.0.1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_enable=1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
13
azerttyu

fermer: xdebug.remote_connect_back=0 ajouter: xdebug.remote_Host=192.168.0.102[your docker Host/machine IP]

0
user3835452

Pour moi sur un environnement PHP, NGINX Docker utilisant sublime, je l’ai obtenu avec les paramètres suivants:

xdebug.remote_enable = 1
xdebug.remote_mode = req
xdebug.remote_port = 9001
xdebug.remote_connect_back=0
xdebug.remote_Host=host.docker.internal

Celui qui m'a pris pour toujours était de définir le remote_Host à Host.docker.internal. 

0
Roger