Включить Xdebug в PHP-проекте под debian: 9-тонкий контейнер

#docker #debian #xdebug

#docker #debian #xdebug

Вопрос:

Вот файл Dockerfile для существующего проекта, над которым я работаю. Я хотел бы активировать Xdebug для размещенного проекта Symfony. Проблема в том, что мне нужен pecl для установки Xdebug, но я не знаю, где / как его добавить!

 ##
#  Base
##

FROM debian:9-slim as base

ENV TERM="xterm" 
    DEBIAN_FRONTEND="noninteractive" 
    TIMEZONE="Europe/Paris" 
    COMPOSER_ALLOW_SUPERUSER=1 
    NODE_VERSION=8.12.0 
    PHP_VERSION=7.2

# System depdendencies
RUN apt-get update --quiet amp;amp; 
    apt-get install --quiet --no-install-recommends --yes 
        apt-transport-https 
        ca-certificates 
        lsb-release 
        wget amp;amp; 
    wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg amp;amp; 
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" >> /etc/apt/sources.list.d/php.list amp;amp; 
    apt-get update --quiet amp;amp; 
    apt-get install --quiet --no-install-recommends --yes 
        curl 
        git 
        nginx 
        php${PHP_VERSION} 
        php${PHP_VERSION}-apcu 
        php${PHP_VERSION}-curl 
        php${PHP_VERSION}-dom 
        php${PHP_VERSION}-fpm 
        php${PHP_VERSION}-gd 
        php${PHP_VERSION}-iconv 
        php${PHP_VERSION}-intl 
        php${PHP_VERSION}-mbstring 
        php${PHP_VERSION}-mysql 
        php${PHP_VERSION}-opcache 
        php${PHP_VERSION}-pdo 
        php${PHP_VERSION}-uuid 
        php${PHP_VERSION}-xml 
        php${PHP_VERSION}-simplexml 
        php${PHP_VERSION}-zip 
        supervisor 
        p7zip-full 
        tzdata 
        unzip 
        libxml2-dev 
        php${PHP_VERSION}-soap 
        vim amp;amp; 
    apt-get clean amp;amp; 
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* amp;amp; 
    mkdir /run/php amp;amp; 
    cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime amp;amp; 
    echo "${TIMEZONE}" > /etc/timezone

# Composer

RUN curl -sS https://getcomposer.org/installer | php -- --version=1.10.9 --install-dir=/usr/local/bin --filename=composer amp;amp; 
    composer global require "hirak/prestissimo:^0.3" --prefer-dist --no-progress --no-suggest --classmap-authoritative amp;amp; 
    composer clear-cache

# Yarn

RUN curl -L -o /tmp/nodejs.tar.gz https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz amp;amp; 
    tar xfvz /tmp/nodejs.tar.gz -C /usr/local --strip-components=1 amp;amp; 
    rm -f /tmp/nodejs.tar.gz amp;amp; 
    npm install yarn -g

COPY .docker/php.ini /etc/php/${PHP_VERSION}/cli/conf.d/50-setting.ini
COPY .docker/php.ini /etc/php/${PHP_VERSION}/fpm/conf.d/50-setting.ini
COPY .docker/pool.conf /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
COPY .docker/nginx.conf /etc/nginx/nginx.conf
COPY .docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf

EXPOSE 80

CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

WORKDIR /app
 

Я попытался добавить это в середину файла :

 RUN pecl install xdebug 
    amp;amp; docker-php-ext-enable xdebug 
 

Но процесс сборки завершается без подсказки!

Итак, я добавил это в конце :

 FROM php:7.2-fpm
RUN pecl install 
    amp;amp; pecl install xdebug 
    amp;amp; docker-php-ext-enable xdebug
 

Ошибок нет, но Xdebug по-прежнему не работает (ничего в phpinfo)!

Что не так?

Комментарии:

1. Я не использую pecl много времени… но я хотел бы попытаться вам помочь … разве вы не должны поместить что-то между «install» и «» первой строки, которую вы пытаетесь добавить («pecl install «)? Вы пытались удалить «pecl install «?

2. при удалении первой строки ничего не произошло! Вы сказали, что не используете pecl, но когда я гуглю Xdebug, он всегда устанавливается с помощью pecl, есть ли другой метод?

3. Я запускаю «pecl install xdebug» в контейнере, созданном из образа docker «php: 7.2-fpm». Он был успешно установлен, но после того, как вы должны добавить «zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so» в php.ini . Вы это сделали?

4. Как можно использовать несколько образов docker? Как вы можете видеть, я использую «debian: 9-slim», и там нет pecl!

5. $ docker run -it —rm —name php7-test php: 7.2-fpm / bin / bash затем: $ pecl установите xdebug сейчас, у вас должен быть установлен xdebug. Взгляните на примечания в конце процедуры установки. Это очень простой вопрос для докеров. Я предлагаю вам взглянуть на официальную документацию dockerfile.