首页 > 解决方案 > 使用 Xdebug 为我的 Docker 设置设置 PhpStorm

问题描述

我无法通过 Xdebug 捕获对我的应用程序的任何请求。我想像我的本地环境一样为我的 Docker 环境进行设置。

这是我的 Dockerfile 开始行:

FROM nginx

RUN apt-get update

RUN apt-get install -y unzip wget curl default-mysql-client libnss3-tools git
RUN apt-get install -y php php-fpm php-cli php-curl php-mysqlnd php-opcache php-pdo php-xml php-bcmath php-calendar \
                        php-ctype php-dom php-exif php-fileinfo php-ftp php-gd php-gettext \
                        php-iconv php-intl php-json php-mbstring php-mysqli php-gd php-mysql php-phar \
                        php-posix php-readline php-shmop php-simplexml php-soap php-sockets \
                        php-sysvmsg php-sysvsem php-sysvshm php-tokenizer php-wddx php-xmlreader \
                        php-xmlwriter php-xsl php-zip php-dev

#Install xdebug
RUN pecl install xdebug
ENV PHP_IDE_CONFIG 'serverName=DockerApp'

VOLUME /var/log/xdebug
ARG XDEBUG_HOST="192.168.1.102"
ARG XDEBUG_PORT=9021

RUN echo "zend_extension=xdebug.so" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.profiler_enable=1" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_enable=1" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_handler=dbgp" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_mode=req" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_host=host.docker.internal" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_port=9000" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_autostart=1" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_connect_back=1" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.idekey=PHPSTORM" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_host=${XDEBUG_HOST}" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini
RUN echo "xdebug.remote_port=${XDEBUG_PORT}" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini

这是我的 docker-compose.yml 开始行。

version: '3.8'
services:
  web:
    container_name: custome_web
    build:
      context: ./
      dockerfile: ./.docker/nginx/Dockerfile
    volumes:
      - ./src:/usr/share/nginx/html
      - ./.docker/certs:/mycert
    ports:
      - "8080:80"
      - "444:443"
    environment:
      XDEBUG_CONFIG: remote_host={{192.168.1.102}}
    links:
      - mysql
      - elasticsearch
    depends_on:
      - mysql
      - elasticsearch

如果有人知道我哪里做错了。请给我建议。我尝试了一切,但我没有找到解决方案......

标签: dockerdocker-composedockerfilephpstormxdebug

解决方案


推荐阅读