FROM mcr.microsoft.com/mssql-tools as mssql
FROM php:8.0-fpm-alpine

COPY --from=mssql /opt/microsoft/ /opt/microsoft/
COPY --from=mssql /opt/mssql-tools/ /opt/mssql-tools/
COPY --from=mssql /usr/lib/libmsodbcsql-13.so /usr/lib/libmsodbcsql-13.so

RUN mkdir -p /var/www

WORKDIR /var/www

# Install dependencies
RUN apk --update add wget \
  curl \
  git \
  grep \
  build-base \
  imagemagick \
  imagemagick-libs \
  imagemagick-dev \
  pcre-dev \
  make \
  autoconf \
  g++ \
  cyrus-sasl-dev \
  libgsasl-dev \
  supervisor \
  freetype \
  libtool \
  libmemcached-dev \
  libmcrypt-dev \
  libxml2-dev \
  libpng \
  libjpeg-turbo \
  libjpeg \
  libjpeg-turbo-dev \
  ldb-dev \
  libldap \
  openldap-dev \
  freetype-dev \
  libpng-dev \
  imap-dev \
  krb5-dev \
  jpeg-dev \
  libzip-dev \
  iputils \
  openssl-dev \
  mysql-client \
  bash \
  bash-completion \
  nano \
  vim \
  gnupg

# Install XDebug
RUN apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS && \
    pecl install xdebug && \
    echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini && \
    echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini && \
    echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini && \
    docker-php-ext-enable xdebug

RUN pecl install imagick

# Install extensions
RUN docker-php-ext-install ldap pdo_mysql zip exif pcntl gd imap xml soap opcache && \
    docker-php-ext-enable --ini-name 20-imagick.ini imagick

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

# Add user for laravel application
RUN addgroup -g 1000 emendis && \
    adduser -s /bin/sh -G emendis -D emendis && \
    if [ ${INSTALL_DEVELOPMENT_TOOLS} = true ]; then \
        addgroup emendis root && \
        sed -e 's/# %wheel ALL=(ALL) NOPASSWD: ALL/%emendis ALL=(ALL) NOPASSWD: ALL/g' \-i /etc/sudoers \
    ;fi

# Copy existing application directory permissions
COPY --chown=emendis:emendis . /var/www

RUN chown -R emendis:emendis /var/www

RUN set -xe \
    && apk add --no-cache --virtual .persistent-deps \
        freetds \
        unixodbc \
    && apk add --no-cache --virtual .build-deps \
        $PHPIZE_DEPS \
        unixodbc-dev \
        freetds-dev \
    && docker-php-source extract \
    && docker-php-ext-install pdo_dblib \
    && pecl install \
        sqlsrv \
        pdo_sqlsrv \
    && docker-php-ext-enable --ini-name 30-sqlsrv.ini sqlsrv \
    && docker-php-ext-enable --ini-name 35-pdo_sqlsrv.ini pdo_sqlsrv \
    && docker-php-source delete \
    && apk del .build-deps

#Download the desired package(s)
RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.1.1-1_amd64.apk
RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.5.1.2-1_amd64.apk

#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.1.1-1_amd64.sig
RUN curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.5.1.2-1_amd64.sig

RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import -
RUN gpg --verify msodbcsql17_17.5.1.1-1_amd64.sig msodbcsql17_17.5.1.1-1_amd64.apk
RUN gpg --verify mssql-tools_17.5.1.2-1_amd64.sig mssql-tools_17.5.1.2-1_amd64.apk

#Install the package(s)
RUN apk add --allow-untrusted msodbcsql17_17.5.1.1-1_amd64.apk
RUN apk add --allow-untrusted mssql-tools_17.5.1.2-1_amd64.apk

# Change current user to www
USER emendis

RUN php -d memory_limit=-1 /usr/local/bin/composer install --no-interaction --no-ansi --no-suggest --prefer-dist

RUN composer dump-autoload

# Expose port 9000 and start php-fpm server
EXPOSE 9000

CMD ["php-fpm"]
