I've tried many things trying to let work Xdebug in a Docker container. I came in contact with these resources:
- Setting up Xdebug with Docker Compose and WordPress image
- Installing XDebug in Docker
- Starting The Debugger
- Zero-configuration Web Application Debugging with Xdebug and PhpStorm
- Xdebug & Zend Debugger bookmarklets generator for PhpStorm
- Configure Xdebug
- Troubleshooting common PHP debugging issues
- .. and other
I think the problem is either something with the ports that I don't understand, or it is something with the debugger session not being started or recognized. For the debugger session I have also tried to install a browser extension that sets a cookie.
I ended up at least to have separate containers, one as dev container with enabled Xdebug.
docker-compose.yml
version: "3"
services:
production:
build: .
ports:
- "8000:80"
volumes:
- .:/var/www/html
development:
build: .
ports:
- "8080:80"
# - "10000:80" also not working
volumes:
- .:/var/www/html
- ./dev.php.ini:/usr/local/etc/php/php.ini
Dockerfile
FROM php:7.4.0-apache
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
dev.php.ini
xdebug.remote_enable=on
xdebug.remote_host=host.docker.internal
xdebug.remote_port=10000
xdebug.idekey=PHPSTORM
localhost:8080 phpinfo data
PhpStorm config
Any ideas?



remote_host, this host is the debug client's IP, your host. And don't think host.docker.internal is being resolved as your host IP, there was a Docker feature request open for linux and think they haven't release a fix or improve this. - abestradxdebug.remote_host=host.docker.internalwill work only if your host OS is Windows or Mac -- github.com/docker/for-linux/issues/264. On Linux you need to locate your host IP address yourself (e.g.ip addrand look fordocker0entry) 2)# - "10000:80" also not working-- will not work. This way you forward incoming connection from your OS into a container. But it's wrong .. as it's Xdebug that connects to IDE and NOT other way around. So it's IDE that listens on Xdebug port.. and if it's already used by Docker then no connection is possible. - LazyOne