FROM debian:stretch-slim

MAINTAINER Salim Mayaleh <salim.mayaleh@abra.eu>

# Nastavení Debianu
ENV DEBIAN_FRONTEND=noninteractive
ENV COMPOSER_VERSION 1.8.0
ENV PHP_VER 7.1
ENV APP_URI samm.local
ENV APP_WWW_DIR /var/www/samm/www
ENV HTTPD_PREFIX /usr/local/apache2

# Ošetření chyby: invoke-rc.d: policy-rc.d denied execution of start.
RUN sed -i "s/^exit 101$/exit 0/" /usr/sbin/policy-rc.d

# Základní repozitář pro debian stretch
RUN echo "deb http://ftp.cz.debian.org/debian stretch main" > /etc/apt/sources.list.d/stretch.list

# Aktualizace definice balíčků a instalace základních balíčků
RUN apt-get update && \
    apt-get install -y --no-install-recommends dialog apt-utils git mc htop nmap wget curl build-essential libssl-dev libreadline-dev \
    bzip2 zlib1g-dev apt-transport-https ca-certificates openssh-client screen inetutils-ping netbase telnet


# Certifikáty pro webserver - je třeba nastavit i v souboru /.docker/files/apache/portal.local.eyelevel.conf
COPY ./files/ssl/cert.crt /etc/ssh/
COPY ./files/ssl/cert.key /etc/ssh/

# Instalace a nastavení Apache
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

RUN apt-get update && apt-get install -y apache2 && \
    a2enmod include && \
    a2enmod rewrite && \
    a2enmod proxy_fcgi && \
    a2enmod ssl && \
    rm /etc/apache2/sites-enabled/000-default.conf

COPY ./files/apache/apache2.conf /etc/apache2/
COPY ./files/apache/${APP_URI}.conf /etc/apache2/sites-available/

RUN echo "umask 002" >>  /etc/apache2/envvars


# Instalace Node.js a NPM
#RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
#    apt-get install -y nodejs

# Instalace Webpacku, Gulpu a Boweru (na nových projektech by se měl používat jen Webpack)
#RUN npm install -g webpack@~3 gulp bower

# Instalace Yarnu který nahrazuje NPM
#RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
#    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
#    apt-get update && apt-get install -y yarn


########################################################################################################################
# Instalace a nastavení PHP (${PHP_VER})
########################################################################################################################





RUN apt-get update && apt-get install -y gnupg2 apt-transport-https lsb-release ca-certificates wget curl \
    #wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add - && \
    #echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list && \
    #apt-get update
    && wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg \
    && echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list


RUN apt-get update && apt-get install -y --no-install-recommends php${PHP_VER} php${PHP_VER}-cli libapache2-mod-php${PHP_VER} \
    firebird-dev \
    php${PHP_VER}-curl \
    php${PHP_VER}-gd \
    php${PHP_VER}-imagick \
    php${PHP_VER}-imap \
    php${PHP_VER}-intl \
    php${PHP_VER}-json \
    php${PHP_VER}-interbase \
    php${PHP_VER}-dev \
    php${PHP_VER}-bcmath \
    php${PHP_VER}-mbstring \
    php${PHP_VER}-mysql \
    php${PHP_VER}-pdo \
    php${PHP_VER}-redis \
    php${PHP_VER}-soap \
    php${PHP_VER}-xml \
    php${PHP_VER}-zip



COPY ./files/php/php.ini /etc/php/${PHP_VER}/apache2/
COPY ./files/php/php.ini /etc/php/${PHP_VER}/cli/

RUN chown www-data:www-data /var/lib/php/sessions

# Xdebug instalujeme a konfigurujeme zvlášť
RUN apt-get update && apt-get install -y php${PHP_VER}-xdebug

COPY ./files/php/xdebug.ini /etc/php/${PHP_VER}/apache2/conf.d/
COPY ./files/php/xdebug.ini /etc/php/${PHP_VER}/cli/conf.d/


# SSH certifikát a klice pro pristup do repositories
#RUN mkdir -p /root/.ssh/
#COPY ./files/ssh/id_rsa /root/.ssh/
#COPY ./files/ssh/id_rsa.pub /root/.ssh/
#COPY ./files/ssh/known_hosts /root/.ssh/
#COPY ./files/ssh/authorized_keys /root/.ssh/
#RUN chmod 600 ~/.ssh/id_rsa


# Instalace Composer
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
  && curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
  && php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
  && php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --version=${COMPOSER_VERSION} && rm -rf /tmp/composer-setup.php


# Instalace NPM balíčků
#RUN npm install -g sass
#RUN npm install -g typescript@3.1.6


# Instalace Composeru TODO Potreba doresit problem se soukromymi repo, pouziti SSH Private Key
#ENV COMPOSER_ALLOW_SUPERUSER 1
#RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
#RUN composer config http-basic.composer.TODO satis TODO -g

# Instalace Presstissima které zajišťuje pararelní stahování balíčku přes composer (něco jako Yarn)
#RUN composer global require "hirak/prestissimo:^0.3"

# Pročištění souborů a cache dockerimage
RUN apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y && \
    rm -rf /var/lib/apt/lists/* /var/lib/log/* /tmp/* /var/tmp/*

# Otevření potřebných portů
EXPOSE 80
EXPOSE 443

# Nastavení Midnight Commander
#COPY ./files/root/.config /root/.config/

# Skripty v bin
COPY ./files/bin/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*

# Aktivování lokální adresy
RUN a2ensite ${APP_URI}

# Nastartování služeb při zapnutí conteineru
RUN sed -i 's/\r$//' /usr/local/bin/container.start.sh
CMD /usr/local/bin/container.start.sh

