netbeans xdebug docker Настройка отладки (ubuntu linux)

Рассмотрим ситуацию, когда приложение с php запущено внутри контейнера и нам нужно отлаживать его через xdebug (инструкция проверялась для php7.4 и Netbeans11.2)

  1. Делаем обычные настройки Run Configuration (чтобы попасть - правой кнопкой мыши по названию проекта в навигаторе и затем выбираем "Properties") (важно указать корректный путь к index file), например:
    netbeans xdebug run configuration
  2. Далее xdebug.ini настраиваем так (xdebug 3 иначе):
    zend_extension=xdebug.so
    xdebug.remote_enable=1
    xdebug.remote_port=9000
    xdebug.remote_autostart=0
    xdebug.remote_connect_back=0
    xdebug.remote_handler=dbgp
    xdebug.idekey=PHP_STORM
    xdebug.remote_host=172.30.0.1

    где

    • 172.30.0.1 - ip вашего хоста (на котором запущен докер) и одновременно шлюз из подсети докера-- далее показано как его установить
    • PHP_STORM -- можно оставить это значение, если кто-то в команде использует шторм и оно важно для этой IDE (нетбинс будет работать и с такой конфигурацией)

Задать ip хоста для докера, можно используя подобный docker-compose.yml:

version: '3.7'
services:
  web:
    build: ./
    ports:
      - 9121:80
      - 9123:81
    volumes:
      - '../:/var/www/html/site'
      - './config/apache/apache-config.conf:/etc/apache2/sites-enabled/000-default.conf'
      - './config/apache/ports.conf:/etc/apache2/ports.conf'
      - './config/php/php.ini:/etc/php/7.4/apache2/php.ini'
      - './config/php/xdebug.ini:/etc/php/7.4/mods-available/xdebug.ini'
    networks:
        frontnet:
            ipv4_address: 172.30.1.2
  db:
    image: postgres:12.2
    volumes:
      - './config/postgresql:/docker-entrypoint-initdb.d'
    environment:
      POSTGRES_PASSWORD: mycool_password
      POSTGRES_USER: mycool_user
      POSTGRES_MULTIPLE_DATABASES: mycool_db,mycool_db_test
    ports:
      - 9122:5432
    networks:
        frontnet:
            ipv4_address: 172.30.1.4
            
networks:
    frontnet:
        ipam:
            driver: default
            config:
            - subnet: 172.30.0.0/16

-- где строка

subnet: 172.30.0.0/16

и обеспечит для сети frontnet адрес шлюза 172.30.0.1, который будет является вашим хостом.

ВНИМАНИЕ: если первая попытка отладки после запуска IDE прошла неуспешно и вы остановили отладку, то может потребоваться перезапуск IDE.

Key Words for FKN + antitotal forum (CS VSU):