@Lenskiy-e

Почему не срабатывают брейкпоинты в xdebug + phpstorm + docker?

Всем доброго времени суток! Пытаюсь настроить xdebug в phpstorm с использованием docker.

У меня есть nginx на котором несколько виртуальных хостов, ниже код docker-compose.yml, урывок php-fpm Dockerfile и xdebug.ini

version: '3.1'
    
    volumes:
      esdata01:
        driver: local
      esdata02:
        driver: local
    
    networks:
      esnet:
      frontend:
      backend:
      internal:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 192.168.220.0/28
      
    services:
      nginx:
        image: nginx
        ports:
            - "80:80"
            - "443:443"
        volumes:
          - ./hosts:/etc/nginx/conf.d
          - ./www:/var/www
          - ./logs:/var/log/nginx
        links:
          - php
        networks:
          - internal
    
      mysql:
        image: mysql:5.7
        ports:
        - "3306:3306"
        volumes:
          - ./mysql:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: secret
        networks:
          - internal
    
      # postgres:
      #   image: postgres
    
      #   ports: 
      #     - "3306:3306"
    
      #   environment:
      #       MYSQL_ROOT_PASSWORD: secret
    
      adminer:
        image: adminer
        restart: always
        ports:
          - 8080:8080
        networks:
          - esnet
    
      php:
        build: ./images/php
    
        links:
          - mysql
    
        volumes:
          - ./www:/var/www
    
        networks:
          - internal
    
        extra_hosts:
          - "dockerhost:10.0.75.1"
    
        environment:
          XDEBUG_CONFIG: "remote_host=dockerhost remote_enable=1 idekey=PHPSTORM"
          PHP_IDE_CONFIG: "serverName=Docker"
    
      workspace:
          build: ./images/workspace
          volumes:
            - ./www:/var/www:cached
          extra_hosts:
            - "dockerhost:10.0.75.1"
          ports:
            - "2222:22"
          tty: true
    
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
        container_name: elasticsearch
        environment:
          - node.name=elasticsearch
          - discovery.seed_hosts=es02
          - cluster.initial_master_nodes=elasticsearch
          - cluster.name=docker-cluster
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - esdata01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - esnet
      # es02:
      #   image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
      #   container_name: es02
      #   environment:
      #     - node.name=es02
      #     - discovery.seed_hosts=es01
      #     - cluster.initial_master_nodes=es01,es02
      #     - cluster.name=docker-cluster
      #     - bootstrap.memory_lock=true
      #     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      #   ulimits:
      #     memlock:
      #       soft: -1
      #       hard: -1
      #   volumes:
      #     - esdata02:/usr/share/elasticsearch/data
      #   networks:
      #     - esnet
    
      redis:
        image: redis:latest
    
        volumes:
              - ./www/redis:/data
    
        ports:
          - "6379:6379"
        networks:
          - esnet


ADD ./php.ini /usr/local/etc/php/php.ini
    ADD ./xdebug.ini /usr/local/etc/php/xdebug.ini


xdebug.remote_host=dockerhost
    xdebug.remote_connect_back=1
    xdebug.remote_port=9000
    xdebug.idekey=PHPSTORM
    
    xdebug.remote_autostart=0
    xdebug.remote_enable=1
    xdebug.cli_color=0
    xdebug.profiler_enable=0
    xdebug.profiler_output_dir="~/xdebug/phpstorm/tmp/profiling"
    
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    
    xdebug.var_display_max_children=-1
    xdebug.var_display_max_data=-1
    xdebug.var_display_max_depth=-1


Настраивал по инструкциям, вроде все было хорошо, валидацию проходил, но когда ставлю брейкпоинты и запускаю прослушивание, ничего не происходит. К слову, настаивал так же через laradock - все сработало.

Я так подозреваю, что это может быть связанно с тем, что в корневой директории /var/www в настройке php-fpm лежат еще несколько директорий с проектами, возможно нужна более тонкая настройка.

Прошу помочь, спасибо!

5d298a15ce79a022228490.png
5d298a2002f11966770734.png
5d298a249b81b427150899.png
  • Вопрос задан
  • 544 просмотра
Пригласить эксперта
Ответы на вопрос 1
serginhold
@serginhold
xdebug.idekey = "PHPSTORM"
xdebug.default_enable = 1
xdebug.remote_enable = 1
xdebug.remote_host = host.docker.internal

вот с последним только заводится

https://blog.jetbrains.com/phpstorm/2018/08/quicks...

+ у меня еще для удобства расширение Xdebug helper установлено в chrome (для вкл/выкл)
Ответ написан
Ваш ответ на вопрос

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

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