# Для начала указываем исходный образ, он будет использован как основа
FROM php:5.6-fpm
# Необязательная строка с указанием автора образа
MAINTAINER PHPtoday.ru <info@phptoday.ru>

# RUN выполняет идущую за ней команду в контексте нашего образа.
# В данном случае мы установим некоторые зависимости и модули PHP.
# Для установки модулей используем команду docker-php-ext-install.
# На каждый RUN создается новый слой в образе, поэтому рекомендуется объединять команды.
RUN apt-get update && apt-get install -y \
        curl \
        wget \
        git \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
		libicu-dev \
        libmemcached-dev \
        libbz2-dev \
        libssh2-1 \
        libssh2-1-dev \
        libssl-dev \
        librabbitmq-dev \
        libxml2-dev \
        libxslt-dev \
    && docker-php-ext-install -j$(nproc) bcmath bz2 calendar exif intl zip opcache soap iconv mbstring mysqli pdo_mysql zip \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install xsl
RUN pecl install https://xdebug.org/files/xdebug-2.5.5.tgz \
RUN pecl install ssh2-0.13
RUN docker-php-ext-enable xdebug ssh2
RUN echo "error_reporting = E_ALL" > /usr/local/etc/php/php.ini
RUN echo "output_buffering = 4096" >> /usr/local/etc/php/php.ini
RUN echo "post_max_size = 256M" >> /usr/local/etc/php/php.ini
RUN echo "upload_max_filesize = 256M" >> /usr/local/etc/php/php.ini
RUN echo "date.timezone = Europe/Moscow" >> /usr/local/etc/php/php.ini
RUN echo "display_startup_errors = On" >> /usr/local/etc/php/php.ini
RUN echo "display_errors = On" >> /usr/local/etc/php/php.ini
RUN echo "expose_php = Off" >> /usr/local/etc/php/php.ini


#Параметры xdebug для корректной работы
#Включение режима удаленной отладки.
RUN echo "xdebug.remote_enable=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Адрес компьютера, на котором расположен клиент отладчика.
#Настройка игнорируется, если значение xdebug.remote_connect_back установлено в 1
RUN echo "xdebug.remote_connect_back=0">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Ключ для удаленных отладчиков.
#Необходим для старта сессии удаленной отладки.
RUN echo "xdebug.idekey=PHPSTORM">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Порт, по которому xDebug пытается подключится к удаленному отладчику.
RUN echo "xdebug.remote_port=9000">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Автоматический старт сеанса отладки без GET/POST запроса.
#Обычно для старта сессии необходим специальный GET/POST запрос.
#Если значение установлено в 1, xDebug будет пытаться начать сеанс отладки 
#и подключение к клиенту без GET/POST параметров.
#RUN echo "xdebug.remote_autostart=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Максимальный уровень вложенности элементов в массиве или свойстве объекта.
RUN echo "xdebug.var_display_max_depth = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Максимальное число выводимых элементов массива или свойств объекта.
RUN echo "xdebug.var_display_max_children = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Максимальная длина выводимых строк.
RUN echo "xdebug.var_display_max_data = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Адрес компьютера, на котором расположен клиент отладчика.
#Настройка игнорируется, если значение xdebug.remote_connect_back установлено в 1
RUN echo "xdebug.remote_host=host.docker.internal">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
 
#Протокол отладчика.
#Xdebug 2.1 и поздние версии поддерживают только DBGp!
RUN echo "xdebug.remote_handler = dbgp">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini



RUN chmod 777 /var/log

RUN apt-get install  -y openssl
RUN apt-get install  -y libssl-dev
RUN apt-get update
RUN apt-get install -y libcurl4-openssl-dev

RUN pecl update-channels
RUN pecl install mongodb-1.6.0 && docker-php-ext-enable mongodb
RUN pecl install amqp && docker-php-ext-enable amqp
RUN pecl install redis-3.1.0 && docker-php-ext-enable redis
RUN pecl install memcached-2.2.0 && docker-php-ext-enable memcached

#Устанавливаем ImageMagick и необходимые библиотеки
RUN apt install -y libmagickwand-dev --no-install-recommends
RUN pecl install imagick && docker-php-ext-enable imagick
    #rm -rf /var/lib/apt/lists/*
#RUN apt install -y imagemagick php-imagick

#RUN pecl install dbase && docker-php-ext-enable dbase
    
# Куда же без composer'а.
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Установить midnight-commander
RUN apt-get install -y mc


#7zip
RUN apt-get install -y p7zip p7zip-full

# ping
RUN apt-get install iputils-ping -y

#Codeception
RUN composer require codeception/codeception



# Добавим свой php.ini, можем в нем определять свои значения конфига
#ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
ADD php.ini /usr/local/etc/php/php.ini



ENV DEBUG="local"
ENV PATH="/var/www/api/vendor/bin:$PATH"

# Указываем рабочую директорию для PHP
WORKDIR /var/www


# Запускаем контейнер
# Из документации: The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable, 
# or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well.
CMD ["php-fpm"]



