Как включить XDebug на образе phalconphp / ubuntu-16.04 docker? - PullRequest
0 голосов
/ 09 апреля 2020

Я использую phalconphp / ubuntu-16.04 docker образ и хочу включить XDebug для этого образа. Цитата из документации изображения на https://hub.docker.com/r/phalconphp/ubuntu-16.04

Xdebug по умолчанию отключен. Чтобы включить его, вам нужно будет передать переменные окружения XDEBUG_REMOTE_ENABLE и / или XDEBUG_REMOTE_HOST.

Описание переменной
XDEBUG_REMOTE_ENABLE = 1 Это включит Xdebug.
XDEBUG_REMOTE_AUTO_START = 1013 * Запустит все запросы 1AUTO_START = 1 * XDEBUG_REMOTE_HOST = 192.168.0.1 Удаленный хост Xdebug.
XDEBUG_REMOTE_PORT = 9000 Будет настроен удаленный хост. Если вы хотите запустить
сеанс отладки, вручную передайте переменную XDEBUG_SESSION_START через GET, POST или COOK IE.

Примечание: чтобы использовать эту функцию, вам нужно установить XDEBUG_REMOTE_HOST.

Это мой оператор run

docker run -d --network TEST 
-p 80:80 
-p 9000:9000 
-e XDEBUG_REMOTE_ENABLE=1 
-e XDEBUG_REMOTE_HOST=host.docker.internal 
-v ${workspaceFolder}:/app 
-v ${workspaceFolder}/docker:/etc/nginx/sites-enabled 
phalconphp/ubuntu-16.04:php-7.2

Когда я смотрю на phpinfo () , xdebug не загружен?

1 Ответ

0 голосов
/ 02 мая 2020

Ваш docker оператор выполнения в порядке. Кажется, есть ошибка в Dockerfile phalcon. Я следовал инструкциям документации и могу убедиться, что это ошибка.


ШАГИ ДЛЯ ВОСПРОИЗВЕДЕНИЯ

  1. Создайте два файла index.php и nginx.conf в следующей структуре.

screenshot of file structure

Это содержимое файла

<?php
// index.php
phpinfo();
# nginx.conf
server {
    listen 80 default_server;

    server_name example.com;

    index index.php;
    root /app/public;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass             unix:/run/php/php7.2-fpm.sock;
        fastcgi_index            index.php;

        include                  fastcgi_params;

        fastcgi_param            SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors on;
        fastcgi_read_timeout     300;
        fastcgi_buffer_size      16k;
        fastcgi_buffers          4 16k;
    }
}
Затем используйте эту команду для запуска контейнера docker
docker run \
    -p 80:80 \
    -v $(pwd):/app \
    -v $(pwd)/docker/nginx.conf:/etc/nginx/sites-enabled/default:ro \
    -e XDEBUG_REMOTE_ENABLE=1  -e XDEBUG_REMOTE_HOST=host.docker.internal \
    phalconphp/ubuntu-16.04:php-7.2

Ожидаемый результат Включен Xdebug

Фактический результат Xdebug не был включен


Когда я копнул глубже в Dockerfile , я обнаружил, что есть сценарии entryfile, но в Dockerfile отсутствует инструкция ENTRYFILE. Я создал Запрос на извлечение , который решит эту проблему.

...