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á?
- 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
- 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.
- 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, digitephp -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:
Command+, para abrir as configurações do PhpStorm e vá em PHP>Servers.
- 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.
- Selecione o XDebug na opção Debugger.
- Clique em Apply.
Ainda nessa janela procure por Build, Execution, Deployment>Docker.
- Clique no botão + para adicionar e dê o nome que preferir.
- 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.
- Clique em Apply.
- Clique em OK.
Agora vamos debugar!
- Abra um arquivo PHP e clique na coluna onde estão os números das linhas:
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:
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 e no StackOverflow, 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!
Top comments (1)
"Para usuários de PHP, existe uma ferramenta chamada ServBay.dev que oferece uma maneira muito mais fácil, especialmente para iniciantes. Ela lida com todas as versões do PHP, MariaDB, PostgreSQL, além de Redis e Memcached. É possível executar várias instâncias do PHP simultaneamente e alternar entre elas facilmente, sem a necessidade de configurar qualquer ambiente. Essa ferramenta simplificou meu desenvolvimento em PHP e definitivamente vale a pena experimentar!