@johnmohnachev

Как настроить Debug режим, если исходники лежат в Docker?

Уже в отчаянии, вчера просидел весь день, сегодня еще пару часов, топчусь на месте, облазил кучу форумов, но не могу встать на бряк.

Так выглядит мой compose файл:
version: "2"
services:
  db:
    image: mysql:5.6
    environment:
      MYSQL_ROOT_PASSWORD: "***"
      MYSQL_DATABASE: "***"
    ports:
      - "3306:3306"
  web:
    image: webdevops/php-nginx-dev:ubuntu-15.10
    expose:
      - "9000"
      - "9001"
    ports:
      - "8080:80"
      - "8443:443"
    links:
      - db
    volumes:
      - /Users/evgeny/Projects/php_docker_test/:/app


Так выглядят настройки xdebug:
xdebug.remote_host=dockerhost
xdebug.idekey=PHPSTORM
xdebug.remote_port=9001
xdebug.remote_connect_back=0
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.profiler_enable=0
xdebug.remote_handler=dbgp
xdebug.remote_mode=req


Так выглядят настройки в IDEA:
gMifLP7s8T9JgHr4XFvNvwsM8xnQpe.png

Так запускаю Debug
JXIyZ7tohB7GMeXCxJJdRngQVx9zha.png

Но на бряки не встаю, помогите пожалуйста.
  • Вопрос задан
  • 993 просмотра
Пригласить эксперта
Ответы на вопрос 2
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
Из конфига в уме видно плохо в чем дело.... Могу посоветовать как отладить:

1. Проверьте во все нужные стороны с помощью telnet - открывается ли коннект.
2. "php5-fpm -i" и "php5-fpm -m" внутри докера (если там fpm) чтобы увидеть реально цепляется ли xdebug и настройки. Ну либо phpinfo();...
3. посмотрите на netstat -ant внутри докера и снаружи - чтобы понимать что происходит с коннектом, открывается ли он и где теряется
4. в крайнем случае tcpdump на хосте

и вот тут (https://xdebug.org/docs/all_settings ) есть про xdebug.remote_connect_back , возможно натолкнет на мысли. И помоему у докера были уже готовые образы с fpm и настроенным xdebug под phpstorm
Ответ написан
Комментировать
Tyranron
@Tyranron
У Вас в конфиге Xdebug указан порт 9001.
xdebug.remote_port=9001

А в контейнере этот порт у Вас выставлен наружу через expose.
expose:
      - "9000"
      - "9001"

Документация ясно говорит что в этом случае порт доступен только другим сервисам из docker-compose.yml.
Expose ports without publishing them to the host machine - they’ll only be accessible to linked services.


PHPStorm'а в docker-compose.yml не видно, а значит он и не может видеть Xdebug на том порту, что Вы ему скармливаете.

Что нужно сделать?
1. Перенести порт 9001 в ports:.
2. В настройках IDEA указать Host: localhost для Xdebug (сейчас у Вас там какой-то левый IP).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы