代码之家  ›  专栏  ›  技术社区  ›  D.R.

XDebug。Docker。无法禁用自动启动

  •  2
  • D.R.  · 技术社区  · 7 年前

    我和 Docker 通过 docker-compose 命令。我希望能够在调试和正常模式下运行我的应用程序,但现在调试器无论如何都会启动。

    我有这样一个 app.docker 文件

    FROM php:7-fpm
    
    RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
        && docker-php-ext-install mcrypt pdo_mysql
    
    RUN yes | pecl install xdebug \
        && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
        && echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
        && echo "xdebug.remote_autostart=0" >> /usr/local/etc/php/conf.d/xdebug.ini \
        && echo "xdebug.idekey=PHPSTORM" >> /usr/local/etc/php/conf.d/xdebug.ini
    
    WORKDIR /var/www
    

    如果我单击“运行”

    enter image description here

    调试会话仍将启动

    enter image description here

    我希望能够运行和调试我的测试(以及应用程序的其余部分)。我错过了什么明显的东西吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   D.R.    6 年前

    这是一种意外的xdebug远程主机行为。

    我已经通过停止使用环境变量解决了这个问题。

    在我的 docker-compose.yml

    app:
            ...
            environment:
                ...
                # removed the line below
                XDEBUG_CONFIG: remote_host=docker.for.mac.localhost
           ...
    

    并将其添加到docker文件中。类似于

    RUN yes | pecl install xdebug \
        ... 
        && echo "xdebug.remote_host=docker.for.mac.localhost" >> /usr/local/etc/php/conf.d/xdebug.ini \
    

    更多信息可以在这里阅读 blog post . 它的创建者为我的解决方案提出了一个想法,我们已经更新了这篇文章。