PHP
September 10, 2023

Настройка Xdebug в Докер-контейнере для PhpStorm по шагам

Шаг 1:

Установка xdebug в докер.

Как сделать файл настроек Dockerfile здесь.

Добавляем эту строку в Dockerfile.

# Установка php-xdebug
  RUN pecl install xdebug && docker-php-ext-enable xdebug

Здесь мы используем pecl install xdebug для скачивания расширения php-xdebug, а затем docker-php-ext-enable xdebug для его активации.

Настроить xdebug в файле php.ini. Добавьте следующую инструкцию RUN в Dockerfile, чтобы скопировать настроенный файл xdebug.ini в контейнер.

Вариант с отдельным конфигурационным файлом docker-php-ext-xdebug.ini

# Копирование настроек xdebug в контейнер
  COPY xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

Вариант с общим конфигурационным файлом php.ini

COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini

В этом файле пишем такие настройки:

zend_extension=xdebug.so
xdebug.remote_enable=on
xdebug.mode=debug
xdebug.client_host=172.17.0.1
xdebug.client_port=9000
xdebug.idekey=my-ide

Шаг 2:

Настройка docker-compose.yml

В сервисе php прописываем секцию "environment":

environment:
     PHP_XDEBUG: 1
     PHP_XDEBUG_MODE: profile,coverage,debug
     PHP_IDE_CONFIG: serverName=my-ide
     PHP_XDEBUG_IDEKEY: my-ide
     PHP_XDEBUG_START_WITH_REQUEST: trigger
     PHP_XDEBUG_TRIGGER_VALUE: my-ide
     PHP_XDEBUG_CLIENT_HOST: 172.17.0.1 # Linux
     PHP_XDEBUG_PROFILER_OUTPUT_NAME: "%t"
     PHP_XDEBUG_LOG_LEVEL: 0

Шаг 3:

Настройка PhpStorm

CTRL+ALT+S открываем настройки, переходим во вкладку PHP и указываем путь к CLI Interpreter.

переходим во вкладку PHP и указываем путь к CLI Interpreter

Предполагается, что php установлен, не в компьютере а в Докер-контейнере. И CLI Interpreter нужно указать тот, который внутри контейнера.

Нажимаем [...] точки в конце выпадающего списка и создаем новый сервер:

создаем новый сервер

Нажимаем + и выбираем вкладку From Docker:

Нажимаем + и выбираем вкладку From Docker

Не забываем чекбокс переключить на Docker Compose:

Не забываем чекбокс переключить на Docker Compose

Разворачиваем селект Service:

Разворачиваем селект Service

И выбираем сервис php. В моем сервис называется php. Имя сервиса можно посмотреть в docker-compose.yml:

Имя сервиса можно посмотреть в docker-compose.yml

Это и есть имя сервиса.

Далее, сохраняем настройки и готово!