Не очень понятен момент про настройку «сетевой области» 20:31. Почему там именно "название-проекта_default", как это определить? А если у меня docker_compose.yml вообще вне проекта? Не понятно, что делать конкретно в моём случае
Приветствую! Благодарю за комментарий, в данном случае имеется ввиду Network Name, то есть сетевой интерфейс, который создаётся в момент запуска композиции Docker. Если явно не указывать название сети в конфиге docker-compose.yml то она будет называться как _default, например php-demo_default. Посмотреть список всех сетей, которые видны докеру, можно при помощи команды: docker network ls Второй вариант - выбрать в момент добавления интерпретатора радиокнопку Docker Compose (она справа сверху будет), после чего указать путь до docker-compose.yml, далее IDE прочитает список сервисов описанных в этом конфиге и нужно будет выбрать нужный (маппинг директорий и волюмов будет настроен автоматически) затем сохранить и выбрать интерпретатор из списка где это требуется.
@@pavelzloi спасибо за подробный комментарий! С этим разобрался, но, к сожалению, настроить до конца всё равно не получилось :( Я пытаюсь начать дебаг-сессию, а не дебажить тесты с помощью php-unit, и вот тут уже не всё так однозначно. Что-то у моей IDE и xdebug не срастается, никак они не могут найти друг друга, при старте сессии в шторме на вкладке дебага висит сообщение Waiting for incoming connection with ide key 'PHPSTORM'. Пытался как-то крутить-вертеть конфигурацию в окошке Run/Debug Configuration, не получается. Чувствую, что где-то на поверхности решение, пока не могу нащупать...
@@hjkta я тут в комментариях писал что ошибся с настройками php-fpm, надо убрать строку из docker-compose в которой пробрасывается 9000 порт, далее надо сделать up -d чтобы пересоздать. В настройках шторма надо прописать 9000 так где Debug конфигурируется. Ещё очень важно не забыть включить плагин в браузере и выбрать в настройках PHPSTORM. А ещё на Винде docker работает с глюками, например отказывается отрывать сетевые порты или блокирует запросы из контейнеров.
@@pavelzloi ну я с самого начала не fpm настраивал, а обычный, а в конфигуратор подглядывал на гитхабе, там же исправленная версия? В шторме 9000 порт стоит, как и плагин, в котором тоже всё настроено. В общем, не знаю, в чём дело, буду разбираться дальше
И конечно же нифига не заработало прямо на этапе подключения интерпретатора внутри докер контейнера. А вот если через docker-compose подключать то вроде подключилось. Посмотрим что дальше будет
Тоже не билдится Step 7/9 : RUN pecl install xdebug && docker-php-ext-enable xdebug ---> Running in 37a1d9af5654 pecl/xdebug requires PHP (version >= 8.0.0, version
Приветствую, благодарю за вопрос! Если ничего не путаю я просто тыкнул первое, разницы никакой нет, но вариант с докер композом требует указания пути до конфига, а через докер можно сразу из списка нужный имедж выбрать.
Привет Друг. Ты в xdebug.ini не указал порт, по-умоланию оно становиться 9000. В Шторме указал что слушать нужно 9001 порт. Так как 9000 занят контейнером. Что за магия происходит?
Приветствую! Всё очень просто, в конфиге docker-compose.yml я указал что контейнер php-fpm должен пробрасывать 9000 на localhost родительской машины. В то же время, когда PHPStorm включается в режим приём сообщений от xdebug он открывает порт, который слушает входящие соединения от xdebug из контейнера php-fpm. Поэтому чтобы не возникало конфликта я в настройках просто указал другой порт, так как не планировал принимать соединения от FPM из контейнера (для тестов либы это было на тот момент не нужно), а если запускать интеграционные тесты то FPM в принципе не нужен, так как тестирование выполняется напрямую через интерпретатор PHP внутри контейнера, но PHPStorm всё равно запускает прослушку 9000 порта. И согласен с Вами насчёт того что надо было просто указать другой порт либо для xdebug, либо для FPM.
Добрый вечер! Данный параметр необходим для того чтобы xdebug из контейнера мог работать напрямю с сетевыми интерфейсами системы. Хотя признаю что это было не очень хорошее решение, гораздо проще указать через параметр xdebug.remote_host=172.17.0.1 где 172.17.0.1 это адрес интерфейса docker0, который создаётся в момент запуска Docker сервиса. PS. Сори за долгий ответ, рук не хватает всё успевать :)
@@pavelzloi Я сталкивался с проблемами когда подеимал докер в ВиртуалБоксе на Винде и прикручивал Шторм, я подчеркнул из вашего видео пару полезных моментов при настройке xdebug. Если сеть php-dev-env_default нужна только для этого, то есть же host.docker.internal (xdebug.remote_host=host.docker.internal). Я не для того чтоб как-то поспорить с вами, просто хочу разобраться не для простых случаев, когда Докер прям на хосте сидит, а когда используется Docker API т.е. как я описывал свой старый стенд, или у вас отдельный тестовый сервер. Спасибо.
Ох, не знал про host.docker.internal, вероятно это появилось в недавних ревизиях Docker, раньше только по IP адресу можно было общаться с хостовой машиной, но в целом всё должно работать нормально. > Я не для того чтоб как-то поспорить с вами В споре рождается истина, но я понял что Вы не спорите, всё ок :) > когда Докер прям на хосте сидит, а когда используется Docker API т.е. как я описывал свой старый стенд, или у вас отдельный тестовый сервер. В моих пример описано использование Docker установленного локально, но можно без особых усилий подключиться к удалённой системе и выполнять всё точно так же как и на локальной, с той лишь разницой что всё будет работать на удалённой системе. Некоторое время назад для решения подобных задач я использовать ansible который через Rsync переносил файлы между машинами и выполнял необходимые действия, но в какой-то момент вплотную познакомился с Kubenetes и не скажу что мир перевернулся, но стало гораздо проще выполнять рутину. Ну да вернёмся к проблеме с xdebug, на Windows есть ряд больших ограничений работы с Docker (файрвол, блокирующий работу с сетью, ограничения на чтение/запись файлов, проблемы в работе виртуальных машин и многое многое другое, причина в том что на Windows Docker работает через прослойку VirtualBox), вероятно в Вашем случае это корень всех проблем. Попробуйте ради эксперимента развернуть в виртуальной машине Linux (например Kubuntu, она визуально очень похожа на Windows => будет проще освоится) и в ней настроить всё необходимое, вроде PHPStorm и композиции из докер контейнеров. Скорее всего всё заработает как надо без дополнительных сложностей.
@@pavelzloi Я так же думал как и вы и пару недель назад решил эту проблему (проброс с Докер - ВиртуалБокс - Шторм на Винде). Думал так потому что год назад боролся с этим, тогда DockerToolbox захотел работать только с Hyper-V, а у меня проекты все под ВиртуалБоксом и вместе они не дружили. Так вот после того как настроил эту схему, прочитал, что ВиртуалБокс стал уживаться с Hyper-V, а DockerToolbox работает совместно с WSL2 . Я пока тестирую, но работает всё оч хорошо.
Добрый день! Если настройка происходит на Linux, то нужно добавит своего пользователя в группу docker, ну или попробовать через sudo запустить команду запуска.
@@pavelzloi Ссылка на ваш дискорд сервер потеряла актуальность, кстати) Спасибо за видео хотелось бы узнать как мне использовать xdebug не в тестах, а в коде, использую ваш образ с laravel, все настройки сделал, но брейкпоинты не работают.
Помню я там поспешил и добавил у fpm контейнера порт 9000, строчка вида - 127.0.0.1:9000:9000, этот же порт используется для прослушивания сообщений xdebug. Если эту строчку убрать и пересоздать комопозицию, а потом в настройках шторма указать порт 9000 в настройках Debug, то после включения "телефонной трубки" брейкпоинты заработают.
Спасибо Вам большое!!! как ни странно на windows тоже норм работает... Единственное шрифт очень мелкий у вас в видео таким слепошарам как я тяжко смотреть )
Добрый день! Благодарю за комментарий. Да, проблема со шрифтами возникала не только у Вас, всё дело в том, что у меня 4к монитор, но для того чтобы всем было видно (а не только обладателям 4к мониторов) приходится юзать его в режиме 2к, это такой компромис между моим удобством и удобством для зрителей с fullhd мониторами. Некоторое время назад меня уже просили чуть крупнее шрифты в шторме сделать, поэтому в последующих видео всё не так мелко, как это было тут.
@@trypophobia7497 там была маленькая опечатка в конфиге, надо убрать проброс порта 9000 в docker-compose тогда дебагер начинает работать нормально. К сожалению я заметил это после того как выложил видос, но а репозитории корректный вариант должен быть.
Оказалось что в новой версии Alpine название пакета с python поменялось на python3, похоже они в 3.16 решили привести названия пакетов к формату принятому в Debian. В общем пофиксил, теперь соберётся без ошибок.
@@nukeMoscow любопытное утверждение, а можете пожалуйста уточнить что имеете ввиду? Это видео записано по типовой инструкции которую мы с коллегами использовали долгое время, так что я не с потолка это все придумал. Кстати, вот мой телеграмм канал t.me/evilfreelancer там ещё есть есть чат, можете высказать свои замечания и уточнения, поможете сделать проект лучше :)
ляяя , как вовремя был сделан гайдик. Спасибо большое
Всегда пожалуйста :)
Не глядя, сразу лайк) Хоть у меня уже всё настроено. Но посмотрю ещё разок)) Может чего нового узнаю.
Ну как это не глядя, надо обязательно посмотреть, может я там накосячил и есть ценные уточнения :)
@@pavelzloi Ну, если накосячил - тогда отписка будет. Без "бэ".
ну и я наверное лайкусик воткну :)
Пишет что не найден пакет python. Заменил на python3. Интересно заработает или нет))
Добрый вечер! Любопытно, спасибо за инфу, протестирую.
Не очень понятен момент про настройку «сетевой области» 20:31. Почему там именно "название-проекта_default", как это определить? А если у меня docker_compose.yml вообще вне проекта? Не понятно, что делать конкретно в моём случае
Приветствую! Благодарю за комментарий, в данном случае имеется ввиду Network Name, то есть сетевой интерфейс, который создаётся в момент запуска композиции Docker.
Если явно не указывать название сети в конфиге docker-compose.yml то она будет называться как _default, например php-demo_default.
Посмотреть список всех сетей, которые видны докеру, можно при помощи команды: docker network ls
Второй вариант - выбрать в момент добавления интерпретатора радиокнопку Docker Compose (она справа сверху будет), после чего указать путь до docker-compose.yml, далее IDE прочитает список сервисов описанных в этом конфиге и нужно будет выбрать нужный (маппинг директорий и волюмов будет настроен автоматически) затем сохранить и выбрать интерпретатор из списка где это требуется.
@@pavelzloi спасибо за подробный комментарий! С этим разобрался, но, к сожалению, настроить до конца всё равно не получилось :( Я пытаюсь начать дебаг-сессию, а не дебажить тесты с помощью php-unit, и вот тут уже не всё так однозначно. Что-то у моей IDE и xdebug не срастается, никак они не могут найти друг друга, при старте сессии в шторме на вкладке дебага висит сообщение Waiting for incoming connection with ide key 'PHPSTORM'.
Пытался как-то крутить-вертеть конфигурацию в окошке Run/Debug Configuration, не получается. Чувствую, что где-то на поверхности решение, пока не могу нащупать...
@@hjkta я тут в комментариях писал что ошибся с настройками php-fpm, надо убрать строку из docker-compose в которой пробрасывается 9000 порт, далее надо сделать up -d чтобы пересоздать.
В настройках шторма надо прописать 9000 так где Debug конфигурируется.
Ещё очень важно не забыть включить плагин в браузере и выбрать в настройках PHPSTORM.
А ещё на Винде docker работает с глюками, например отказывается отрывать сетевые порты или блокирует запросы из контейнеров.
@@pavelzloi ну я с самого начала не fpm настраивал, а обычный, а в конфигуратор подглядывал на гитхабе, там же исправленная версия? В шторме 9000 порт стоит, как и плагин, в котором тоже всё настроено. В общем, не знаю, в чём дело, буду разбираться дальше
@@pavelzloi только вот забыл спросить, зачем в репозитории сразу два php, обычный и fpm?
И конечно же нифига не заработало прямо на этапе подключения интерпретатора внутри докер контейнера. А вот если через docker-compose подключать то вроде подключилось. Посмотрим что дальше будет
У меня в консоли выходит ошибка ERROR: Service 'php' failed to build : Build failed, когда я запускаю docker-compose build
Добрый день! А можно чуть больше подробностей об этой ошибке? Может там будет сказано что именно было причиной.
В гите нерабочее решение, не тратьте время
Тоже не билдится
Step 7/9 : RUN pecl install xdebug && docker-php-ext-enable xdebug
---> Running in 37a1d9af5654
pecl/xdebug requires PHP (version >= 8.0.0, version
Конт не билдится:
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
Если убрать python, после make (line:8) то номр билдится
Такой вопрос: почему конфигурация phpstorm'a происходит именно с docker, а не docker-compose? Какая собственно разница между данными вариантами?
Приветствую, благодарю за вопрос! Если ничего не путаю я просто тыкнул первое, разницы никакой нет, но вариант с докер композом требует указания пути до конфига, а через докер можно сразу из списка нужный имедж выбрать.
@@pavelzloi спасибо за ответ
Привет Друг.
Ты в xdebug.ini не указал порт, по-умоланию оно становиться 9000.
В Шторме указал что слушать нужно 9001 порт. Так как 9000 занят контейнером.
Что за магия происходит?
Приветствую!
Всё очень просто, в конфиге docker-compose.yml я указал что контейнер php-fpm должен пробрасывать 9000 на localhost родительской машины. В то же время, когда PHPStorm включается в режим приём сообщений от xdebug он открывает порт, который слушает входящие соединения от xdebug из контейнера php-fpm.
Поэтому чтобы не возникало конфликта я в настройках просто указал другой порт, так как не планировал принимать соединения от FPM из контейнера (для тестов либы это было на тот момент не нужно), а если запускать интеграционные тесты то FPM в принципе не нужен, так как тестирование выполняется напрямую через интерпретатор PHP внутри контейнера, но PHPStorm всё равно запускает прослушку 9000 порта.
И согласен с Вами насчёт того что надо было просто указать другой порт либо для xdebug, либо для FPM.
@@pavelzloi спасибо за разъяснения.
Скажите, а зачем нужно указывать сеть в Network Mode? (в вашем случае php-dev-env_default)
Добрый вечер! Данный параметр необходим для того чтобы xdebug из контейнера мог работать напрямю с сетевыми интерфейсами системы. Хотя признаю что это было не очень хорошее решение, гораздо проще указать через параметр xdebug.remote_host=172.17.0.1 где 172.17.0.1 это адрес интерфейса docker0, который создаётся в момент запуска Docker сервиса.
PS. Сори за долгий ответ, рук не хватает всё успевать :)
@@pavelzloi Я сталкивался с проблемами когда подеимал докер в ВиртуалБоксе на Винде и прикручивал Шторм, я подчеркнул из вашего видео пару полезных моментов при настройке xdebug.
Если сеть php-dev-env_default нужна только для этого, то есть же host.docker.internal (xdebug.remote_host=host.docker.internal). Я не для того чтоб как-то поспорить с вами, просто хочу разобраться не для простых случаев, когда Докер прям на хосте сидит, а когда используется Docker API т.е. как я описывал свой старый стенд, или у вас отдельный тестовый сервер.
Спасибо.
Ох, не знал про host.docker.internal, вероятно это появилось в недавних ревизиях Docker, раньше только по IP адресу можно было общаться с хостовой машиной, но в целом всё должно работать нормально.
> Я не для того чтоб как-то поспорить с вами
В споре рождается истина, но я понял что Вы не спорите, всё ок :)
> когда Докер прям на хосте сидит, а когда используется Docker API т.е. как я описывал свой старый стенд, или у вас отдельный тестовый сервер.
В моих пример описано использование Docker установленного локально, но можно без особых усилий подключиться к удалённой системе и выполнять всё точно так же как и на локальной, с той лишь разницой что всё будет работать на удалённой системе.
Некоторое время назад для решения подобных задач я использовать ansible который через Rsync переносил файлы между машинами и выполнял необходимые действия, но в какой-то момент вплотную познакомился с Kubenetes и не скажу что мир перевернулся, но стало гораздо проще выполнять рутину.
Ну да вернёмся к проблеме с xdebug, на Windows есть ряд больших ограничений работы с Docker (файрвол, блокирующий работу с сетью, ограничения на чтение/запись файлов, проблемы в работе виртуальных машин и многое многое другое, причина в том что на Windows Docker работает через прослойку VirtualBox), вероятно в Вашем случае это корень всех проблем. Попробуйте ради эксперимента развернуть в виртуальной машине Linux (например Kubuntu, она визуально очень похожа на Windows => будет проще освоится) и в ней настроить всё необходимое, вроде PHPStorm и композиции из докер контейнеров.
Скорее всего всё заработает как надо без дополнительных сложностей.
@@pavelzloi Я так же думал как и вы и пару недель назад решил эту проблему (проброс с Докер - ВиртуалБокс - Шторм на Винде). Думал так потому что год назад боролся с этим, тогда DockerToolbox захотел работать только с Hyper-V, а у меня проекты все под ВиртуалБоксом и вместе они не дружили. Так вот после того как настроил эту схему, прочитал, что ВиртуалБокс стал уживаться с Hyper-V, а DockerToolbox работает совместно с WSL2 . Я пока тестирую, но работает всё оч хорошо.
@@pavelzloi я так понял это настройки под линуху? И для докера под виндой это xdebug.client_host = host.docker.internal
Добрый день, отсутствует сервер Docker как у вас на видео не подскажите как правильно его создать?
Добрый день! Если настройка происходит на Linux, то нужно добавит своего пользователя в группу docker, ну или попробовать через sudo запустить команду запуска.
@@pavelzloi Ссылка на ваш дискорд сервер потеряла актуальность, кстати) Спасибо за видео хотелось бы узнать как мне использовать xdebug не в тестах, а в коде, использую ваш образ с laravel, все настройки сделал, но брейкпоинты не работают.
Помню я там поспешил и добавил у fpm контейнера порт 9000, строчка вида - 127.0.0.1:9000:9000, этот же порт используется для прослушивания сообщений xdebug.
Если эту строчку убрать и пересоздать комопозицию, а потом в настройках шторма указать порт 9000 в настройках Debug, то после включения "телефонной трубки" брейкпоинты заработают.
@@pavelzloi Благодарю за ответ, но не помогло
А у Вас какая операционная система? На Windows и MacOS докер работает немного иначе чем на Linux.
Спасибо Вам большое!!! как ни странно на windows тоже норм работает... Единственное шрифт очень мелкий у вас в видео таким слепошарам как я тяжко смотреть )
Добрый день! Благодарю за комментарий.
Да, проблема со шрифтами возникала не только у Вас, всё дело в том, что у меня 4к монитор, но для того чтобы всем было видно (а не только обладателям 4к мониторов) приходится юзать его в режиме 2к, это такой компромис между моим удобством и удобством для зрителей с fullhd мониторами.
Некоторое время назад меня уже просили чуть крупнее шрифты в шторме сделать, поэтому в последующих видео всё не так мелко, как это было тут.
@@pavelzloi Это хорошо )) Насчет этого урока у вас на Linux работает трубка(listing debug connections)?? через докер...
@@trypophobia7497 там была маленькая опечатка в конфиге, надо убрать проброс порта 9000 в docker-compose тогда дебагер начинает работать нормально. К сожалению я заметил это после того как выложил видос, но а репозитории корректный вариант должен быть.
@@pavelzloi спасибо там разберусь главное что работает!
))))))))
В гите нерабочее решение, не тратьте время
Благодарю за комментарий, после работы посмотрю что там не так.
Оказалось что в новой версии Alpine название пакета с python поменялось на python3, похоже они в 3.16 решили привести названия пакетов к формату принятому в Debian. В общем пофиксил, теперь соберётся без ошибок.
@@pavelzloi соберется только отладчик будет работать только у автора.
@@nukeMoscow любопытное утверждение, а можете пожалуйста уточнить что имеете ввиду? Это видео записано по типовой инструкции которую мы с коллегами использовали долгое время, так что я не с потолка это все придумал.
Кстати, вот мой телеграмм канал t.me/evilfreelancer там ещё есть есть чат, можете высказать свои замечания и уточнения, поможете сделать проект лучше :)