vscode - phpstorm xdebug docker-compose
¿Cómo puedo depurar mi contenedor docker con phpStorm? (3)
Encontré una solución más automatizada En mi ENTRYPOINT ejecuté el script startServices
#!/bin/bash
HOST_IP=`/sbin/ip route | awk ''/default/ { print $3 }''`
head -n -1 /etc/php5/mods-available/xdebug.ini > /etc/php5/mods-available/xdebug.tmp
echo "xdebug.remote_host="$HOST_IP >> /etc/php5/mods-available/xdebug.tmp
rm /etc/php5/mods-available/xdebug.ini
mv /etc/php5/mods-available/xdebug.tmp /etc/php5/mods-available/xdebug.ini
/usr/bin/supervisord
Toma la dirección IP actual de la máquina host y reemplaza la línea en xdebug.ini, luego la ejecución de la bruja supervisora está comenzando todo
Mi inicial xdebug.ini
zend_extension=xdebug.so
[xdebug]
; priority=999
xdebug.remote_autostart=true
xdebug.remote_enable = On
xdebug.remote_connect_back = Off
xdebug.remote_port = 9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.var_display_max_data = 2048
xdebug.var_display_max_depth = 128
xdebug.max_nesting_level = 500
xdebug.remote_host=127.0.0.1
Después de ejecutar el script, obtendré algo como esto
zend_extension=xdebug.so
[xdebug]
; priority=999
xdebug.remote_autostart=true
xdebug.remote_enable = On
xdebug.remote_connect_back = Off
xdebug.remote_port = 9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.var_display_max_data = 2048
xdebug.var_display_max_depth = 128
xdebug.max_nesting_level = 500
xdebug.remote_host=172.17.0.1
Donde 172.17.0.1 es mi host actual ip
Bajo la siguiente dirección IP, mi contenedor se ejecuta correctamente en mi navegador web
También he creado un volumen para compartir archivos entre mi contenedor y mi sistema de archivos
docker run --name lampf -d -p 32775:80 -v /Users/sja/Sites/lamkepf2:/var/www/html --link=lampf_db:db codinglimo/apache_php540_gs_imgmck_pdflib9
Ahora instalo xDebug correctamente en mi contenedor con el siguiente xdebug.ini
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/temp/profiledir"
PHPStorm también está configurado
http://img2.picload.org/image/iowdpww/xdebug.png
Pero mis puntos de ruptura en mi index.php se ignoran? Cual es mi error
El problema es resolver con la ayuda de Sergey
Mi nuevo xdebug.ini
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.remote_enable=on
#xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/temp/profiledir"
Funcionó para mí simplemente ejecutando dentro del contenedor:
pecl install -o -f xdebug /
&& rm -rf /tmp/pear /
&& echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so" > /usr/local/etc/php/conf.d/xdebug.ini /
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini /
&& echo "xdebug.remote_host=172.17.42.1" >> /usr/local/etc/php/conf.d/xdebug.ini /
&& echo "xdebug.remote_connect_back=On" >> /usr/local/etc/php/conf.d/xdebug.ini /
&& echo "memory_limit = 64M" > /usr/local/etc/php/conf.d/php.ini
Y luego, reiniciando el contenedor.
172.17.42.1 es la IP predeterminada del host, cuando se ejecuta Docker. Puede obtener la IP de su host ejecutando en el contenedor:
/sbin/ip route|awk ''/default/ { print $3 }''
Su contenedor Docker no puede ver su IDE de PHP Storm con la IP 127.0.0.1, por lo general, el host es 172.17.42.1 desde un contenedor. También remote_connect_back no funcionará bien, probablemente. Intenta configurarlo de esta manera:
xdebug.remote_host=172.17.42.1
xdebug.remote_connect_back=Off
Es posible que deba buscar una forma adecuada de conocer la IP del host dentro de su contenedor, 172.17.42.1 es el valor predeterminado, pero no siempre es así.