Настройка xDebug + Docker + PHPStorm

Поділитися
Вставка
  • Опубліковано 26 жов 2024

КОМЕНТАРІ • 56

  • @aksalot396
    @aksalot396 4 роки тому

    ляяя , как вовремя был сделан гайдик. Спасибо большое

    • @pavelzloi
      @pavelzloi  4 роки тому

      Всегда пожалуйста :)

  • @АнатолийНовосельцев-ъ6я

    Не глядя, сразу лайк) Хоть у меня уже всё настроено. Но посмотрю ещё разок)) Может чего нового узнаю.

    • @pavelzloi
      @pavelzloi  5 років тому

      Ну как это не глядя, надо обязательно посмотреть, может я там накосячил и есть ценные уточнения :)

    • @АнатолийНовосельцев-ъ6я
      @АнатолийНовосельцев-ъ6я 5 років тому

      @@pavelzloi Ну, если накосячил - тогда отписка будет. Без "бэ".

  • @asbestoable
    @asbestoable 4 роки тому

    ну и я наверное лайкусик воткну :)

  • @neprepod
    @neprepod 3 роки тому +2

    Пишет что не найден пакет python. Заменил на python3. Интересно заработает или нет))

    • @pavelzloi
      @pavelzloi  3 роки тому

      Добрый вечер! Любопытно, спасибо за инфу, протестирую.

  • @hjkta
    @hjkta 4 роки тому +1

    Не очень понятен момент про настройку «сетевой области» 20:31. Почему там именно "название-проекта_default", как это определить? А если у меня docker_compose.yml вообще вне проекта? Не понятно, что делать конкретно в моём случае

    • @pavelzloi
      @pavelzloi  4 роки тому +2

      Приветствую! Благодарю за комментарий, в данном случае имеется ввиду Network Name, то есть сетевой интерфейс, который создаётся в момент запуска композиции Docker.
      Если явно не указывать название сети в конфиге docker-compose.yml то она будет называться как _default, например php-demo_default.
      Посмотреть список всех сетей, которые видны докеру, можно при помощи команды: docker network ls
      Второй вариант - выбрать в момент добавления интерпретатора радиокнопку Docker Compose (она справа сверху будет), после чего указать путь до docker-compose.yml, далее IDE прочитает список сервисов описанных в этом конфиге и нужно будет выбрать нужный (маппинг директорий и волюмов будет настроен автоматически) затем сохранить и выбрать интерпретатор из списка где это требуется.

    • @hjkta
      @hjkta 4 роки тому

      @@pavelzloi спасибо за подробный комментарий! С этим разобрался, но, к сожалению, настроить до конца всё равно не получилось :( Я пытаюсь начать дебаг-сессию, а не дебажить тесты с помощью php-unit, и вот тут уже не всё так однозначно. Что-то у моей IDE и xdebug не срастается, никак они не могут найти друг друга, при старте сессии в шторме на вкладке дебага висит сообщение Waiting for incoming connection with ide key 'PHPSTORM'.
      Пытался как-то крутить-вертеть конфигурацию в окошке Run/Debug Configuration, не получается. Чувствую, что где-то на поверхности решение, пока не могу нащупать...

    • @pavelzloi
      @pavelzloi  4 роки тому +1

      @@hjkta я тут в комментариях писал что ошибся с настройками php-fpm, надо убрать строку из docker-compose в которой пробрасывается 9000 порт, далее надо сделать up -d чтобы пересоздать.
      В настройках шторма надо прописать 9000 так где Debug конфигурируется.
      Ещё очень важно не забыть включить плагин в браузере и выбрать в настройках PHPSTORM.
      А ещё на Винде docker работает с глюками, например отказывается отрывать сетевые порты или блокирует запросы из контейнеров.

    • @hjkta
      @hjkta 4 роки тому

      @@pavelzloi ну я с самого начала не fpm настраивал, а обычный, а в конфигуратор подглядывал на гитхабе, там же исправленная версия? В шторме 9000 порт стоит, как и плагин, в котором тоже всё настроено. В общем, не знаю, в чём дело, буду разбираться дальше

    • @hjkta
      @hjkta 4 роки тому

      @@pavelzloi только вот забыл спросить, зачем в репозитории сразу два php, обычный и fpm?

  • @neprepod
    @neprepod 3 роки тому

    И конечно же нифига не заработало прямо на этапе подключения интерпретатора внутри докер контейнера. А вот если через docker-compose подключать то вроде подключилось. Посмотрим что дальше будет

  • @blackmulthumor
    @blackmulthumor 3 роки тому

    У меня в консоли выходит ошибка ERROR: Service 'php' failed to build : Build failed, когда я запускаю docker-compose build

    • @pavelzloi
      @pavelzloi  3 роки тому

      Добрый день! А можно чуть больше подробностей об этой ошибке? Может там будет сказано что именно было причиной.

    • @nukeMoscow
      @nukeMoscow 2 роки тому

      В гите нерабочее решение, не тратьте время

    • @WalkHB2
      @WalkHB2 Рік тому

      Тоже не билдится
      Step 7/9 : RUN pecl install xdebug && docker-php-ext-enable xdebug
      ---> Running in 37a1d9af5654
      pecl/xdebug requires PHP (version >= 8.0.0, version

  • @NiaGen
    @NiaGen 3 роки тому

    Конт не билдится:
    ERROR: unable to select packages:
    python (no such package):
    required by: world[python]
    ERROR: Service 'php' failed to build: The command '/bin/sh -c apk add --update --no-cache bash curl wget rsync ca-certificates openssl openssh git tzdata openntpd libxrender fontconfig libc6-compat mysql-client gnupg binutils-gold autoconf g++ gcc gnupg libgcc linux-headers make python' returned a non-zero code: 1

    • @NiaGen
      @NiaGen 3 роки тому

      Если убрать python, после make (line:8) то номр билдится

  • @Arlasdarier
    @Arlasdarier 3 роки тому

    Такой вопрос: почему конфигурация phpstorm'a происходит именно с docker, а не docker-compose? Какая собственно разница между данными вариантами?

    • @pavelzloi
      @pavelzloi  3 роки тому +1

      Приветствую, благодарю за вопрос! Если ничего не путаю я просто тыкнул первое, разницы никакой нет, но вариант с докер композом требует указания пути до конфига, а через докер можно сразу из списка нужный имедж выбрать.

    • @Arlasdarier
      @Arlasdarier 3 роки тому

      @@pavelzloi спасибо за ответ

  • @ТатаринУральский
    @ТатаринУральский 5 років тому +1

    Привет Друг.
    Ты в xdebug.ini не указал порт, по-умоланию оно становиться 9000.
    В Шторме указал что слушать нужно 9001 порт. Так как 9000 занят контейнером.
    Что за магия происходит?

    • @pavelzloi
      @pavelzloi  5 років тому +2

      Приветствую!
      Всё очень просто, в конфиге docker-compose.yml я указал что контейнер php-fpm должен пробрасывать 9000 на localhost родительской машины. В то же время, когда PHPStorm включается в режим приём сообщений от xdebug он открывает порт, который слушает входящие соединения от xdebug из контейнера php-fpm.
      Поэтому чтобы не возникало конфликта я в настройках просто указал другой порт, так как не планировал принимать соединения от FPM из контейнера (для тестов либы это было на тот момент не нужно), а если запускать интеграционные тесты то FPM в принципе не нужен, так как тестирование выполняется напрямую через интерпретатор PHP внутри контейнера, но PHPStorm всё равно запускает прослушку 9000 порта.
      И согласен с Вами насчёт того что надо было просто указать другой порт либо для xdebug, либо для FPM.

    • @ТатаринУральский
      @ТатаринУральский 5 років тому

      @@pavelzloi спасибо за разъяснения.

  • @fitter2boss72
    @fitter2boss72 3 роки тому

    Скажите, а зачем нужно указывать сеть в Network Mode? (в вашем случае php-dev-env_default)

    • @pavelzloi
      @pavelzloi  3 роки тому

      Добрый вечер! Данный параметр необходим для того чтобы xdebug из контейнера мог работать напрямю с сетевыми интерфейсами системы. Хотя признаю что это было не очень хорошее решение, гораздо проще указать через параметр xdebug.remote_host=172.17.0.1 где 172.17.0.1 это адрес интерфейса docker0, который создаётся в момент запуска Docker сервиса.
      PS. Сори за долгий ответ, рук не хватает всё успевать :)

    • @fitter2boss72
      @fitter2boss72 3 роки тому

      @@pavelzloi Я сталкивался с проблемами когда подеимал докер в ВиртуалБоксе на Винде и прикручивал Шторм, я подчеркнул из вашего видео пару полезных моментов при настройке xdebug.
      Если сеть php-dev-env_default нужна только для этого, то есть же host.docker.internal (xdebug.remote_host=host.docker.internal). Я не для того чтоб как-то поспорить с вами, просто хочу разобраться не для простых случаев, когда Докер прям на хосте сидит, а когда используется Docker API т.е. как я описывал свой старый стенд, или у вас отдельный тестовый сервер.
      Спасибо.

    • @pavelzloi
      @pavelzloi  3 роки тому

      Ох, не знал про host.docker.internal, вероятно это появилось в недавних ревизиях Docker, раньше только по IP адресу можно было общаться с хостовой машиной, но в целом всё должно работать нормально.
      > Я не для того чтоб как-то поспорить с вами
      В споре рождается истина, но я понял что Вы не спорите, всё ок :)
      > когда Докер прям на хосте сидит, а когда используется Docker API т.е. как я описывал свой старый стенд, или у вас отдельный тестовый сервер.
      В моих пример описано использование Docker установленного локально, но можно без особых усилий подключиться к удалённой системе и выполнять всё точно так же как и на локальной, с той лишь разницой что всё будет работать на удалённой системе.
      Некоторое время назад для решения подобных задач я использовать ansible который через Rsync переносил файлы между машинами и выполнял необходимые действия, но в какой-то момент вплотную познакомился с Kubenetes и не скажу что мир перевернулся, но стало гораздо проще выполнять рутину.
      Ну да вернёмся к проблеме с xdebug, на Windows есть ряд больших ограничений работы с Docker (файрвол, блокирующий работу с сетью, ограничения на чтение/запись файлов, проблемы в работе виртуальных машин и многое многое другое, причина в том что на Windows Docker работает через прослойку VirtualBox), вероятно в Вашем случае это корень всех проблем. Попробуйте ради эксперимента развернуть в виртуальной машине Linux (например Kubuntu, она визуально очень похожа на Windows => будет проще освоится) и в ней настроить всё необходимое, вроде PHPStorm и композиции из докер контейнеров.
      Скорее всего всё заработает как надо без дополнительных сложностей.

    • @fitter2boss72
      @fitter2boss72 3 роки тому

      @@pavelzloi Я так же думал как и вы и пару недель назад решил эту проблему (проброс с Докер - ВиртуалБокс - Шторм на Винде). Думал так потому что год назад боролся с этим, тогда DockerToolbox захотел работать только с Hyper-V, а у меня проекты все под ВиртуалБоксом и вместе они не дружили. Так вот после того как настроил эту схему, прочитал, что ВиртуалБокс стал уживаться с Hyper-V, а DockerToolbox работает совместно с WSL2 . Я пока тестирую, но работает всё оч хорошо.

    • @resolution07
      @resolution07 8 місяців тому

      @@pavelzloi я так понял это настройки под линуху? И для докера под виндой это xdebug.client_host = host.docker.internal

  • @millenionfaust6130
    @millenionfaust6130 4 роки тому

    Добрый день, отсутствует сервер Docker как у вас на видео не подскажите как правильно его создать?

    • @pavelzloi
      @pavelzloi  4 роки тому

      Добрый день! Если настройка происходит на Linux, то нужно добавит своего пользователя в группу docker, ну или попробовать через sudo запустить команду запуска.

    • @millenionfaust6130
      @millenionfaust6130 4 роки тому

      @@pavelzloi Ссылка на ваш дискорд сервер потеряла актуальность, кстати) Спасибо за видео хотелось бы узнать как мне использовать xdebug не в тестах, а в коде, использую ваш образ с laravel, все настройки сделал, но брейкпоинты не работают.

    • @pavelzloi
      @pavelzloi  4 роки тому

      Помню я там поспешил и добавил у fpm контейнера порт 9000, строчка вида - 127.0.0.1:9000:9000, этот же порт используется для прослушивания сообщений xdebug.
      Если эту строчку убрать и пересоздать комопозицию, а потом в настройках шторма указать порт 9000 в настройках Debug, то после включения "телефонной трубки" брейкпоинты заработают.

    • @millenionfaust6130
      @millenionfaust6130 4 роки тому

      @@pavelzloi Благодарю за ответ, но не помогло

    • @pavelzloi
      @pavelzloi  4 роки тому

      А у Вас какая операционная система? На Windows и MacOS докер работает немного иначе чем на Linux.

  • @trypophobia7497
    @trypophobia7497 4 роки тому

    Спасибо Вам большое!!! как ни странно на windows тоже норм работает... Единственное шрифт очень мелкий у вас в видео таким слепошарам как я тяжко смотреть )

    • @pavelzloi
      @pavelzloi  4 роки тому

      Добрый день! Благодарю за комментарий.
      Да, проблема со шрифтами возникала не только у Вас, всё дело в том, что у меня 4к монитор, но для того чтобы всем было видно (а не только обладателям 4к мониторов) приходится юзать его в режиме 2к, это такой компромис между моим удобством и удобством для зрителей с fullhd мониторами.
      Некоторое время назад меня уже просили чуть крупнее шрифты в шторме сделать, поэтому в последующих видео всё не так мелко, как это было тут.

    • @trypophobia7497
      @trypophobia7497 4 роки тому

      @@pavelzloi Это хорошо )) Насчет этого урока у вас на Linux работает трубка(listing debug connections)?? через докер...

    • @pavelzloi
      @pavelzloi  4 роки тому

      @@trypophobia7497 там была маленькая опечатка в конфиге, надо убрать проброс порта 9000 в docker-compose тогда дебагер начинает работать нормально. К сожалению я заметил это после того как выложил видос, но а репозитории корректный вариант должен быть.

    • @trypophobia7497
      @trypophobia7497 4 роки тому

      @@pavelzloi спасибо там разберусь главное что работает!
      ))))))))

  • @nukeMoscow
    @nukeMoscow 2 роки тому

    В гите нерабочее решение, не тратьте время

    • @pavelzloi
      @pavelzloi  2 роки тому

      Благодарю за комментарий, после работы посмотрю что там не так.

    • @pavelzloi
      @pavelzloi  2 роки тому

      Оказалось что в новой версии Alpine название пакета с python поменялось на python3, похоже они в 3.16 решили привести названия пакетов к формату принятому в Debian. В общем пофиксил, теперь соберётся без ошибок.

    • @nukeMoscow
      @nukeMoscow 2 роки тому

      @@pavelzloi соберется только отладчик будет работать только у автора.

    • @pavelzloi
      @pavelzloi  2 роки тому

      @@nukeMoscow любопытное утверждение, а можете пожалуйста уточнить что имеете ввиду? Это видео записано по типовой инструкции которую мы с коллегами использовали долгое время, так что я не с потолка это все придумал.
      Кстати, вот мой телеграмм канал t.me/evilfreelancer там ещё есть есть чат, можете высказать свои замечания и уточнения, поможете сделать проект лучше :)