Skip to main content

Docker Xdebug 3 Phpstorm

Bonjour à tous !

Un article très rapide car je n’ai trouvé aucun tuto pour debug avec phpstorm et la dernière version de xdebug !

Voici en “vrac” la solution que j’ai trouvé !

Config stack Docker

Dans votre image docker ajouter xdebug: (Dockerfile):

FROM composer:2.0 as composer

FROM php:7.4-fpm
RUN docker-php-ext-install pdo_mysql
RUN pecl install apcu xdebug
RUN apt-get update && \
apt-get install -y \
libzip-dev

RUN docker-php-ext-install zip
RUN docker-php-ext-enable apcu
RUN docker-php-ext-enable xdebug

WORKDIR /usr/src/app

COPY --chown=1000:1000 app/ /usr/src/app
COPY --from=composer /usr/bin/composer /usr/bin/composer

RUN PATH=$PATH:/usr/src/app/vendor/bin:bin
RUN composer install --no-scripts --prefer-dist \
  && rm -rf "$(composer config cache-dir)" "$(composer config data-dir)"

 

Créez un fichier .ini contenant la configuration xdebug (xdebug.ini):

xdebug.client_host=host.docker.internal
xdebug.idekey=PHPSTORM
xdebug.start_with_request=yes
xdebug.mode=debug

Dans votre stack docker-compose.dev.yaml:

version: '3.8'

services:
  php:
    build:
      context: .
      dockerfile: docker/php/dev/Dockerfile
    restart: unless-stopped
    environment:
      PHP_IDE_CONFIG: 'serverName=localhost'
    volumes:
      - './app/:/usr/src/app'
      - './docker/php/dev/xdebug.ini/:/usr/local/etc/php/conf.d/xdebug-local.ini'
    user: ${LOCAL_USER}

  nginx:
    image: nginx:1.19.0-alpine
    restart: unless-stopped
    ports:
      - '${NGINX_PORT}:80'
    volumes:
      - './app/public/:/usr/src/app'
      - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
    depends_on:
      - php

 

L’env PHP_IDE_CONFIG est visiblement important pour que PhpStorm se repère. On map notre fichier xdebug.ini dans la conf php du container.

Config PhpStorm

Vous devez ajouter votre CLI Interpreter, configurer les ports de debug général sur lesquelles PhpStorm va écouter, créer une configuration en mode remote debug, renseignez la clé IDE et surtout configurer le path mapping comme il faut pour le serveur utilisé dans la config remote debug.

En bref et dans mon cas en adéquation avec ma stack plus haut, en screenshots:

 

Pour vous faire une idée du path mapping, voici un tree de mon dossier:

 

.

├── app

│   ├── bin

│   ├── composer.json

│   ├── composer.lock

│   ├── config

│   ├── public

│   ├── src

│   ├── symfony.lock

│   ├── var

│   │   ├── cache

│   │   └── log

│   └── vendor

├── docker

│   ├── nginx

│   │   └── default.conf

│   └── php

│       ├── Dockerfile

│       └── dev

├── docker-compose.dev.yaml

└── docker-compose.yaml

 

Voilà, c’était rapide mais essentiel !

 

Valentin.

Valentin Deville

Twitter: @v_deville Instagram: @valentin.deville Linkedin: @vdeville Société: Deville Computing

Leave a Reply

Your email address will not be published. Required fields are marked *