Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
453 views
in Technique[技术] by (71.8m points)

php - How to debug docker container with PhpStorm

Can't debug the web app with the following configuration:

Dockerfile:

FROM php:7-fpm

RUN yes | pecl install xdebug 
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name 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_autostart=0" >> /usr/local/etc/php/conf.d/xdebug.ini 
    && echo "xdebug.remote_host=site.dev" >> /usr/local/etc/php/conf.d/xdebug.ini 
    && echo "xdebug.remote_log=/var/www/site/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug.ini

WORKDIR /var/www/site

nginx server (site.conf):

server {
    server_name site.dev www.site.dev;
    root /var/www/site/src/UI/Web/Silex/Public;
    ...
}

docker-compose.yml:

version: '2'
services:
    php:
        container_name: acme_php
        build: etc/docker/development/php
        volumes:
            - ./:/var/www/site
    nginx:
        container_name: acme_nginx
        build: etc/docker/development/nginx
        ports:
            - "80:80"
        volumes:
            - ./:/var/www/site
            - ./etc/docker/development/nginx/site.conf:/etc/nginx/conf.d/site.conf
        links:
            - php

Running the server:

docker-compose up -d --build

Server:

enter image description here

Debug:

enter image description here

Run/Debug configurations:

enter image description here

Pressing bug button opens chrome but doesn't stop in the breakpoint:

enter image description here

Running phpinfo() looks like (xdebug area):

enter image description here

xdebug.log:

I: Connecting to configured address/port: site.dev:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/site/src/UI/Web/Silex/Public/index.php" language="PHP" xdebug:language_version="7.1.5" protocol_version="1.0" appid="6" idekey="18032"><engine version="2.5.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="break" reason="ok"><xdebug:message filename="file:///var/www/site/src/UI/Web/Silex/Public/index.php" lineno="5"></xdebug:message></response>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Why it is not stopping in the breakpoint? :(

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Changes to make it work:

Dockerfile:

FROM php:7-fpm

RUN yes | pecl install xdebug 
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name 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_autostart=0" >> /usr/local/etc/php/conf.d/xdebug.ini 

WORKDIR /var/www/site

docker-compose.yml:

version: '2'
services:
    php:
        container_name: acme_php
        build: etc/docker/development/php
        volumes:
            - ./:/var/www/site
        links:
            - db
        environment:
          XDEBUG_CONFIG: "remote_host=192.168.1.99"
          PHP_IDE_CONFIG: "serverName=site.dev"
    nginx:
        container_name: acme_nginx
        build: etc/docker/development/nginx
        ports:
            - "80:80"
        volumes:
            - ./:/var/www/site
            - ./etc/docker/development/nginx/site.conf:/etc/nginx/conf.d/site.conf
        links:
            - php

/etc/hosts (host machine):

127.0.0.1 site.dev

Thanks for all the help in your comments @LazyOne


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...