php and xdebug module in docker

Viewed 30

i wanna make a sample dockerized php application with xdebug module and my problem is when i open http://127.0.0.1:8080 i get error This site can’t be reached . how can i fix this and what is best practice for this? this is my structure of my tiny project:

  • /docker
    • nginx
      • default.conf
    • php
      • conf.d
        • error_reporting.ini
        • xdebug.ini
  • docker-compose.yml
  • index.php

Dockerfile:

FROM php:7.4-fpm

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug \

docker-compose.yml:

version: '3'

services:

  webserver:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./:/var/www

  php:

    build: ./docker/php/
    expose:
      - 9000
    volumes:
      - .:/var/www/html
      - ./docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
      - ./docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini

default.conf :

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

error_reporting.ini:

error_reporting=E_ALL

xdebug.ini:

zend_extension=xdebug

[xdebug]
xdebug.mode=develop,debug
xdebug.client_host=host.docker.internal
xdebug.start_with_request=yes
1 Answers

You're container name is incorrect in nginx config:

fastcgi_pass app:9000;

This should be

fastcgi_pass php:9000;

because you've named the container php in your compose file.

Related