FROM php:7.3-apache

MAINTAINER Sascha Hannes <hannes@publicplan.de>
MAINTAINER Maximilian Schmitz <schmitz@publicplan.de>

ARG APACHE_DOCUMENT_ROOT=/var/www/project/docroot
ARG PHP_MEMORY_LIMIT=512M

ENV APACHE_DOCUMENT_ROOT=$APACHE_DOCUMENT_ROOT
ENV PHP_MEMORY_LIMIT=$PHP_MEMORY_LIMIT

ENV COMPOSER_ALLOW_SUPERUSER=1

# Configure apache
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-enabled/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

# Install development tools
RUN apt-get update && apt-get install -y \
    git \
    ssh \
    mysql-client \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Install additional packages
RUN apt-get update && apt-get install -y --no-install-recommends \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        zlib1g-dev \
        libzip-dev \
        apt-utils \
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd mysqli pdo pdo_mysql zip \
    && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install opcache && docker-php-ext-enable opcache

RUN pecl install xdebug-2.7.2 \
    && docker-php-ext-enable xdebug

# Configure environment
RUN a2enmod rewrite
RUN echo "file_uploads = On\n\
memory_limit = 64M\n\
upload_max_filesize = 64M\n\
post_max_size = 64M\n\
max_execution_time = 600\n\
memory_limit = ${PHP_MEMORY_LIMIT}" \
> /usr/local/etc/php/conf.d/drupal.ini
RUN sed -i 's/memory_limit = 128M/memory_limit = '"${PHP_MEMORY_LIMIT}"'/g' /usr/local/etc/php/php.ini-production
RUN sed -i 's/memory_limit = 128M/memory_limit = '"${PHP_MEMORY_LIMIT}"'/g' /usr/local/etc/php/php.ini-development
RUN echo "export PATH=\"/var/www/html/bin:${PATH}\"" > ~/.bashrc
RUN /etc/init.d/apache2 restart

# Configure xdebug
RUN echo "xdebug.idekey = PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.default_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_autostart = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_connect_back = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_port = 9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Cleanup
RUN docker-php-source delete; \
    pecl clear-cache; \
    \
    rm -rf \
        /usr/include/php \
        /usr/lib/php/build \
        /tmp/* \
        /root/.composer \
        /var/cache/apk/*;

COPY ./project /var/www/project
COPY ./setup/db_imports/ /dump

WORKDIR $APACHE_DOCUMENT_ROOT
