XDebug, PHPStorm, Docker, macOS Ventura
Tags: phpstorm, docker, xdebug, laravel
Published: 2023-07-11 14:31:07

UFA! Consegui.
Rodei muito a internet e fui encontrando pedaços aqui e ali que me ajudaram a finalmente fazer o XDebug funcionar no Docker com o PhpStorm. Vamos lá?

1. Edite seu Dockerfile para adicionar a instalação do XDebug:

```
# Add xdebug
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS
RUN apk add --update linux-headers
RUN pecl install xdebug-3.1.5
RUN docker-php-ext-enable xdebug
RUN apk del -f .build-deps

# Copie o arquivo xdebug.ini para o diretório de configuração do PHP
COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
```

2. Crie um arquivo de configuração para o XDebug:

```
xdebug.mode=develop,coverage,debug,profile
xdebug.idekey=docker
xdebug.start_with_request=yes
xdebug.log=/dev/stdout
xdebug.log_level=0
xdebug.client_port=9003
xdebug.client_host=<IP-DA-SUA-MÁQUINA>
```
Para pegar o IP da sua máquina, veja as configurações de conexão, do Wi-Fi, por exemplo, e pegue esse IP indicado. Não use 127.0.0.1, pois não é esse.

3. Pare seus contêineres caso estejam rodando e no Terminal digite: `docker-compose up -d --build` para recriar instalando e configurando o XDebug. Assim que estiverem rodando, digite `php -v` e você deverá ver algo parecido com:

```
PHP 8.1.21 (cli) (built: Jul 10 2023 23:14:30) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.21, Copyright (c) Zend Technologies
    with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
```

Se você conseguiu ver isso, parabéns, o XDebug está instalado em seu contêiner.

Agora vamos configurar o PhpStorm:

![Janela do PhpStorm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5faoazyg6x9f2frhnenq.png)

Command+, para abrir as configurações do PhpStorm e vá em PHP>Servers.

1. Clique no botão + para criar, dê o nome que preferir, o host e a porta. No meu caso estou usando a 81, mas indique a que você estiver configurado em seu Dockerfile.
2. Selecione o XDebug na opção Debugger.
3. Clique em Apply.

Ainda nessa janela procure por Build, Execution, Deployment>Docker.

![Janela do PhpStorm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phw5300r4bzvhubgln01.png)

1. Clique no botão + para adicionar e dê o nome que preferir.
2. Selecione Docker for Mac e selecione um das opções para se conectar. O restante deve aparecer automaticamente: a mensagem de conexão feita com sucesso e o PATH, como está nessa imagem anexa acima.
3. Clique em Apply.
4. Clique em OK.

Agora vamos **debugar!**

1. Abra um arquivo PHP e clique na coluna onde estão os números das linhas:

![Janela do PhpStorm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ntje510bfplfnd5c769g.png)
Isso vai adicionar um `breakpoint` (ponto de parada) e faça a requisição pelo navegador ou pelo Insomnia/Postman. Fique de olho do PhpStorm, ele vai abrir a janela de depuração abaixo e assim que a execução chegar a esse ponto, você vai pode fazer a depuração inspecionando essas informações:

![Janela do PhpStorm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89xiiitv07mu5ga8oydz.png)

Pronto! Você está debugando com o XDebug no PhpStorm rodando no macOS Ventura.

Resumo da ópera:
A maior dificuldade foi encontrar tutoriais ou artigos sobre o assunto que tinham todo o conteúdo junto. Precisei garimpar em vários sites como por exemplo: [Jack Miras](https://dev.to/jackmiras/xdebug-in-phpstorm-with-docker-2al8) e no [StackOverflow](https://stackoverflow.com/a/73104342/4012733), entre outros, mas os mais eficientes foram esses dois.

A segunda foi sacar que o `WORKDIR` no Dockerfile precisavam ser completos, compatíveis com o Laravel, por exemplo: `/var/www/html`.

O bom é que aprendi muito sobre Docker, seus comandos, estrutura, ambiente, etc.

É isso galera, espero ter ajudado!