[英]Xdebug, Docker and VSCode on Windows 10
我正在寻找有关在 Windows 10 上使用 Docker 和 VSCode 设置 Xdebug 的一些指导。我的 docker 设置如下,但我总是得到“EADDRINUSE: address already in use ::9000”,并且从未从内部获得 Xdebug 的任何输出VS代码!
该项目基于 Laravel。
.vscode\\launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug on Docker App",
"type": "php",
"request": "launch",
"port": 9000,
// "pathMappings": {
// "/var/www/html": "${workspaceFolder}"
"pathMappings": {
"/var/www/html": "C:\\development\\inventory-service\\"
},
}
]
}
文件
# Create and build composer dependencies
FROM composer:2.0 AS vendor
COPY database/ database/
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install \
--ignore-platform-reqs \
--no-interaction \
--no-plugins \
--no-scripts \
--prefer-dist
# Create and build application
FROM php:8.0-apache
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
&& sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
# RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
RUN apt-get update && apt-get install -y \
libpng-dev \
zlib1g-dev \
libxml2-dev \
libzip-dev \
libonig-dev \
zip \
curl \
unzip \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-source delete
# Install Xdebug
# RUN pecl install -f xdebug
# RUN echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini;
RUN pecl install xdebug && docker-php-ext-enable xdebug \
&& echo "\n\
xdebug.remote_host = 192.168.150.1 \n\
xdebug.default_enable = 1 \n\
xdebug.remote_autostart = 1 \n\
xdebug.remote_connect_back = 0 \n\
xdebug.remote_enable = 1 \n\
xdebug.remote_handler = "dbgp" \n\
xdebug.remote_port = 9000 \n\
xdebug.remote_log = /var/www/html/xdebug.log \n\
" >> /usr/local/etc/php/conf.d/docker-php-xdebug.ini
# Copy the scheduler script into the image
COPY scheduler.sh /usr/local/bin/scheduler
COPY service.sh /usr/local/bin/service
# Set permissions on image folders
RUN a2enmod rewrite headers \
&& chmod u+x /usr/local/bin/scheduler \
&& chmod u+x /usr/local/bin/service
# Copy the application into the image
COPY --from=vendor /usr/bin/composer /usr/bin/composer
COPY --from=vendor /app/vendor/ /var/www/html/vendor/
COPY . /var/www/html
# Set permissions on image folders
RUN chown -R www-data:www-data /var/www/html
我已经在网上浏览了许多帖子来设置它,但我似乎总是遇到相同的端口使用问题和/或没有调试数据(尽管 VSCode 运行调试器)。
任何帮助非常感谢...
好的,所以我需要更新 1 个文件 (dockerfile),我需要创建一个新文件 (.vscode\\launch.json)。
在dockerfile中添加以下内容(Xdebug使用的端口号为9003)
# Install Xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug \
&& echo "\n\
xdebug.client_host=host.docker.internal \n\
xdebug.mode=debug \n\
xdebug.start_with_request=yes \n\
xdebug.discover_client_host=0 \n\
xdebug.remote_handler = "dbgp" \n\
xdebug.client_port=9003 \n\
xdebug.log = /var/www/html/xdebug.log \n\
" >> /usr/local/etc/php/conf.d/docker-php-xdebug.ini
然后创建或更新您的 .vscode\\launch.json(路径映射:Docker 上的路径,然后是您的代码文件夹的本地路径)
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug on Docker App",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "C:\\development\\inventory-service\\"
},
}
]
}
...然后重建您的 docker 实例。
浏览器调试:
在 VSCode 中,选择要调试的文件,在需要的地方添加断点,然后按 F5 开始调试会话。 然后从 Web 浏览器在本地转到您正在调试的页面。
通过控制台调试工匠命令:
在 VSCode 中,选择要调试的文件,在需要的地方添加断点,然后按 F5 开始调试会话。 然后在 docker 实例上直接(以正常方式)从命令行运行控制台命令(从 docker 桌面为相关容器/服务选择 CLI)。
我相信有一种方法可以从你的 VSCode 终端测试控制台,但它从来没有对我有用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.