首页 > 解决方案 > Docker 启用 Xdebug

问题描述

我的 php 容器有这样的 Dockerfile:

FROM my-image/debian

ARG PHP_VERSION

...
...

RUN \
    set -eux \
    \
    # INSTALL SURY SOURCES
    && buildDeps='apt-transport-https lsb-release wget' \
    && apt-get update \
    && apt-get install -y --no-install-recommends --no-install-suggests $buildDeps \
    && wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg \
    && echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list \
    \
    && update-ca-certificates \
    \
    # INSTALL PHP PACKAGES
    && apt-get update \
    && apt-get install -y --no-install-recommends --no-install-suggests \
      php$PHP_VERSION \
      php$PHP_VERSION-cli \
      php$PHP_VERSION-fpm \
      php$PHP_VERSION-opcache \
      php$PHP_VERSION-redis \
      php$PHP_VERSION-apcu \
      php$PHP_VERSION-zip zip unzip \
      php$PHP_VERSION-curl \
      php$PHP_VERSION-gd \
      php$PHP_VERSION-intl \
      php$PHP_VERSION-mysql \
      php$PHP_VERSION-soap \
      php$PHP_VERSION-amqp \
      php$PHP_VERSION-bcmath \
      php$PHP_VERSION-socket \
      php$PHP_VERSION-dom \
      php$PHP_VERSION-mbstring \
      php-pear \
      php$PHP_VERSION-dev \
    && mkdir -p /var/run/ \
    \
    # Install xdebug
    && pecl install xdebug \
    && docker-php-ext-enable xdebug \
    \
    # CLEAN
    && apt-get clean \
    && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $buildDeps \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /var/cache/apt/archives/* \
    && rm -rf /tmp/* \
....
....
....

当我构建它时,我得到错误 /bin/sh: 1: docker-php-ext-enable: not found

我不想从 alpine 或其他外部 php 图像中获取图像。由于特殊原因,我想构建 php 并从 my-image/debian 中获得帮助。

有人可以帮我激活 xdebug 吗?它安装得很好(通过pecl)但是当我这样做时php -v它不存在,即使在重建和重新启动容器之后

谢谢

标签: phplinuxdockerdockerfilexdebug

解决方案


docker-php-ext-enableDebian 映像中默认不存在脚本。您需要将其复制到您的 docker-image 中,就像在官方 7.3 buster image中一样。添加到您的Dockerfile字符串:

....
COPY docker-php-ext-enable /usr/local/bin/
....
    && docker-php-ext-enable xdebug \
....

不要忘记将docker-php-ext-enable文件放入 build-context 目录。


推荐阅读