Включить / отключить xDebug через Docker -Создать, возможно ли это? - PullRequest
0 голосов
/ 06 января 2020

У меня есть следующее Dockerfile:

FROM php:7.2-apache
RUN apt-get update && apt-get install -y \
        zlib1g-dev \
        git \
        unzip \
    && rm -rf /var/lib/apt/lists/ \
    && docker-php-ext-install zip pdo_mysql bcmath \
    && a2enmod rewrite \
    && pecl install xdebug-2.9.0 redis \
    && docker-php-ext-enable xdebug redis \
    && mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" \
    && mv /var/www/html /var/www \
    && chown -R www-data:www-data /var/www/ \
    && ln -s /usr/local/bin/php /usr/bin/php
COPY --from=composer:1.9 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/drm-case
CMD ["docker/apache/bootstrap.sh"]

И это файл docker-compose.yml, который использует предыдущий Dockerfile для построения контейнеров (хотя и не всегда):

version: "2.4"

services:
  case-v2-apache:
    container_name: local-dev
    image: local-dev:1.6 # increase this number when changing the Dockerfile
    depends_on:
      mysql-server:
        condition: service_healthy
    volumes:
      - ${LOCAL_PATH}:/var/www:delegated
      - ${LOCAL_PATH}/docker/apache/conf.d:/usr/local/etc/php/conf.d
      - ${LOCAL_PATH}/docker/apache/conf-enabled/servername.conf:/etc/apache2/conf-enabled/servername.conf
      - ${LOCAL_PATH}/docker/apache/sites-available/000-default.conf:/etc/apache2/sites-available/000-default.conf
    ports:
      - "8009:80"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    build:
      context: ${LOCAL_PATH:-./local-dev}
      dockerfile: docker/apache/Dockerfile
    networks:
      - main
    environment:
      - VIRTUAL_HOST=local-dev.localhost
      - COMPOSER_MEMORY_LIMIT=-1
      - COMPOSER_AUTH=${COMPOSER_AUTH}
      - COMPOSER_ALLOW_SUPERUSER=1
      - PHP_IDE_CONFIG=serverName=local-dev

Один из файлов, копируемых в этой строке: ${LOCAL_PATH}/docker/apache/conf.d:/usr/local/etc/php/conf.d означает, что xdebug означает включение и настройку расширения.

Интересно, есть ли способ сообщить Docker с помощью переменных ARG или ENV для включения / отключения xDebug при запуске контейнера? Кто-нибудь пробовал такое раньше? Если да, можете ли вы помочь мне с некоторыми идеями?

1 Ответ

1 голос
/ 06 января 2020

Вы можете просто переместить / переименовать файл конфигурации xdebug, основываясь на аргументе сборки ...

FROM php:7.2-apache
RUN apt-get update && apt-get install -y \
        zlib1g-dev \
        git \
        unzip \
    && rm -rf /var/lib/apt/lists/ \
    && docker-php-ext-install zip pdo_mysql bcmath \
    && a2enmod rewrite \
    && pecl install xdebug-2.9.0 redis \
    && docker-php-ext-enable xdebug redis \
    && mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" \
    && mv /var/www/html /var/www \
    && chown -R www-data:www-data /var/www/ \
    && ln -s /usr/local/bin/php /usr/bin/php
COPY --from=composer:1.9 /usr/bin/composer /usr/bin/composer

RUN if [[ "$DISABLE_XDEBUG" == "1" ]] ; then mv "$PHP_INI_DIR/conf.d/xdebug.ini" "$PHP_INI_DIR/conf.d/xdebug.ini.disabled"

WORKDIR /var/www/drm-case
CMD ["docker/apache/bootstrap.sh"]

... или что-то в этом роде?

...