Xdebug в VSCodium (vscode): отладка PHP приложения в контейнере docker из браузера - Настройка

Файл docker-compose.yml

# Файл docker-compose должен начинаться с указания версии.
version: '3.9'

# Сети
networks:
    internal:

# Ниже список наших сервисов (контейнеров). NGINX, PHP, MySQL
services:
    # Nginx service
    nginx:
        image: nginx:alpine
        container_name: ktu_nginx
        ports:
          - 19621:80
        expose:
          - "80"
        environment:
          - VIRTUAL_HOST=fkn.ktu10.loc
          - VIRTUAL_PORT=80
        volumes:
          - './config/nginx/:/etc/nginx/conf.d/'
          - '..:/var/www/project'
        depends_on:
          - app
          - mysql
        networks:
          - internal
    app:
        build:
          context: .
          dockerfile: Dockerfile
        container_name: ktu_old_php
        volumes:
          - '../:/var/www/project'
          - './config/mysql:/docker-entrypoint-initdb.d'
          - './config/php-fpm/docker-php-ext-xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini'
        ports:
          - "9000:9000"
        networks:
          - internal
    mysql:
        image: mysql:5.7
        container_name: ktu_old_db_mysql
        command: --default-authentication-plugin=mysql_native_password
                 --innodb_use_native_aio=0
#         command: --mysql-native-password=ON
        ports:
          - "19622:3306"
        volumes:
          - './config/mysql:/docker-entrypoint-initdb.d'
          - '../input:/var/www/input'
        # Задаем пароль для root пользователя
        environment:
          MYSQL_ROOT_PASSWORD: 1234
          MYSQL_USER: ktu_old_user
          MYSQL_PASSWORD: ktu_old_password
          MYSQL_MULTIPLE_DATABASES: ktu_old_mysql_db
        networks:
         - internal

Файл launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=...
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "log": true,
            "pathMappings": {
                "/var/www": "${workspaceRoot}",
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 0,
            "runtimeArgs": [
                "-dxdebug.start_with_request=yes"
            ],
            "env": {
                "XDEBUG_MODE": "debug,develop",
                "XDEBUG_CONFIG": "client_port=${port}"
            }
        },
        {
            "name": "Launch Built-in web server",
            "type": "php",
            "request": "launch",
            "runtimeArgs": [
                "-dxdebug.mode=debug",
                "-dxdebug.start_with_request=yes",
                "-S",
                "localhost:0"
            ],
            "program": "",
            "cwd": "${workspaceRoot}",
            "port": 9000,
            "serverReadyAction": {
                "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
                "uriFormat": "http://localhost:%s",
                "action": "openExternally"
            }
        }
    ]
}

Файл Dockerfile

FROM php:7.2-fpm-alpine3.6

RUN apk --no-cache update \
    && apk add --no-cache autoconf g++ make \
    \
    && pecl install xdebug-2.6.1 \
    \
    && docker-php-ext-install pdo_mysql mbstring \
    \
    && rm -rf /tmp/pear
# RUN apt-get install php-xdebug

# Install dependencies for GD and install GD with support for jpeg, png webp and freetype
# Info about installing GD in PHP https://www.php.net/manual/en/image.inst...
RUN apk add --no-cache \
    libjpeg-turbo-dev \
    libpng-dev \
    libwebp-dev \
    freetype-dev

# As of PHP 7.4 we don't need to add --with-png
RUN docker-php-ext-configure gd --with-jpeg --with-png --with-webp --with-freetype

RUN echo 'memory_limit = 256M' >> /usr/local/etc/php/conf.d/docker-fpm.ini

WORKDIR /var/www/project

# Запускаем контейнер
CMD ["php-fpm"]

Файл docker-php-ext-xdebug.ini

zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.start_with_request=yes
xdebug.idekey="netbeans-xdebug"

Если зайти по адресу http://localhost:19621/?XDEBUG_SESSION_S... то браузер и отладчик друг друга вообще не видят. Кука "XDEBUG_SESSION" устанавливается сразу при заходе на страницу.

vedro-compota's picture

Файл docker-php-ext-xdebug.ini

zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.start_with_request=yes
xdebug.idekey="netbeans-xdebug"

возможно тут стоит проверить что настройки указаны именно для твоей версии xdebug: https://fkn.ktu10.com/?q=node/12116

_____________
матфак вгу и остальная классика =)