Xdebug в VSCodium (vscode): отладка PHP приложения в контейнере docker из браузера - Настройка
Primary tabs
Файл 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=830387
"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.installation.php
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_START=netbeans-xdebug то браузер и отладчик друг друга вообще не видят. Кука "XDEBUG_SESSION" устанавливается сразу при заходе на страницу.
- Log in to post comments
- 657 reads
vedro-compota
Mon, 07/29/2024 - 17:14
Permalink
версия xdebug
возможно тут стоит проверить что настройки указаны именно для твоей версии xdebug: https://fkn.ktu10.com/?q=node/12116
_____________
матфак вгу и остальная классика =)