首页 > 解决方案 > Xdebug 不会在断点上停止 Mac OS + Docker

问题描述

我在 Mac OS 上的 Docker 中使用 Nging+php-fpm。我正在尝试调试我的应用程序,但 PHPStorm 不会在断点处停止。

这是我的 docker-compose.yml

version: '3'

services:
  app_php:
    build:
      context: ./docker/php
      dockerfile: Dockerfile
      args:
        USER_ID: 1000
        GROUP_ID: 1000
    restart: always
    environment:
      XDEBUG_CONFIG: remote_host=192.168.0.92
      PHP_IDE_CONFIG: serverName=localhost

    volumes:
      - ./docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ./web:/var/www/html
    depends_on:
      - db
      - redis

  web_nginx:
    image: nginx:1.17.9-alpine
    restart: always
    ports:
      - 8090:80
    volumes:
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./web:/var/www/html
    depends_on:
      - app_php

这是 Dockerfile

FROM php:7.4-fpm-alpine3.11

# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

RUN apk add --no-cache \
  shadow \
  freetype \
  freetype-dev \
  ghostscript \
  ghostscript-fonts \
  gmp-dev \
  graphicsmagick \
  libjpeg-turbo \
  libjpeg-turbo-dev \
  libpng \
  libpng-dev \
  libwmf \
  libxml2-dev \
  libzip \
  libzip-dev \
  icu \
  icu-dev \
  git \
  vim

# most likely used for local dev only
ARG USER_ID=1000
ARG GROUP_ID=1000

RUN usermod -u ${USER_ID} www-data \
 && groupmod -g ${GROUP_ID} www-data

RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
  && docker-php-ext-configure zip

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

RUN docker-php-ext-install -j$(nproc) gd mysqli soap zip intl

ENV PHP_CONFIG_DIR /usr/local/etc/php
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
    && pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && apk del -f .build-deps \
    && echo "zend_extension=$(find $(php-config --extension-dir) -name xdebug.so)" > $PHP_CONFIG_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.remote_enable=1' >> $PHP_CONFIG_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.remote_port=10000' >> $PHP_CONFIG_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.remote_connect_back=1' >> $PHP_CONFIG_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.remote_autostart=0' >> $PHP_CONFIG_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.idekey="PHPSTORM"' >> $PHP_CONFIG_DIR/conf.d/xdebug.ini \
    && echo 'xdebug.max_nesting_level=1000' >> $PHP_CONFIG_DIR/conf.d/xdebug.ini


WORKDIR /var/www/html

这是我在 PHPStorm 中的配置: 在此处输入图像描述

在此处输入图像描述

我试图改变XDEBUG_CONFIG: remote_host=192.168.0.92XDEBUG_CONFIG: remote_host=host.docker.internal但它没有帮助。我也可以从 docker 容器内部通过 curl 成功到达 192.168.0.92:8090。

有谁知道如何解决这个问题?

标签: phpmacosdockerdockerfilexdebug

解决方案


推荐阅读