FROM php:7.2-apache as base

# install dependencies
RUN apt-get update -y \
  && apt-get install -y \
    libxml2-dev \
    zip \
    unzip \
    libcurl4-gnutls-dev \
    libpng-dev \
    libpq-dev \
    libedit-dev \
    libreadline-dev \
  && apt-get clean -y \
  && docker-php-ext-install opcache soap curl gd intl json mbstring pdo pdo_pgsql readline xml xmlrpc

# enable mod_rewrite for Apache 2.2
RUN a2enmod rewrite
RUN a2enmod headers
RUN a2enmod expires
# set ServerName as localhost
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN service apache2 restart



FROM base as comp

ENV COMPOSER_HOME=/root/.composer
# Create Composer directory (cache and auth files) & Get Composer
RUN mkdir -p $COMPOSER_HOME \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer



FROM comp as deps_genesis

WORKDIR /var/www/html/genesis
COPY genesis/composer.json .
COPY genesis/composer.lock .
RUN composer install --no-dev


FROM deps_genesis as deps_internal

WORKDIR /var/www/html/internal
COPY internal/composer.json .
COPY internal/composer.lock .
RUN composer install --no-dev


FROM deps_internal as deps_invoicing

WORKDIR /var/www/html/invoicing
COPY invoicing/composer.json .
COPY invoicing/composer.lock .
RUN composer install --no-dev


FROM deps_invoicing as deps_v1

WORKDIR /var/www/html/v1
COPY v1/composer.json .
COPY v1/composer.lock .
RUN composer install --no-dev



FROM deps_v1 as prod-stage

ARG INTERNAL_CONFIG_PATH
ENV INTERNAL_CONFIG_PATH=${INTERNAL_CONFIG_PATH}
ARG V1_CONFIG_PATH
ENV V1_CONFIG_PATH=${V1_CONFIG_PATH}
ARG GENESIS_ENV
ENV GENESIS_ENV=${GENESIS_ENV}
ARG INVOICING_ENV
ENV INVOICING_ENV=${INVOICING_ENV}

WORKDIR /var/www/html
ADD . ./
#RUN touch ./internal/config.json \
#    && echo ${INTERNAL_CONFIG_PATH} | base64 --decode >> ./internal/config.json
#RUN touch ./v1/config.json \
#    && echo ${V1_CONFIG_PATH} | base64 --decode >> ./v1/config.json
RUN touch ./genesis/.env \
    && echo ${GENESIS_ENV} | base64 --decode >> ./genesis/.env
RUN touch ./invoicing/.env \
    && echo ${INVOICING_ENV} | base64 --decode >> ./invoicing/.env
RUN cd invoicing/app/keys \
  && ./generate.sh
RUN chown -R www-data:www-data /var/www/html
EXPOSE 80
