# Base image to use, must be a PHP Alpine image with FPM, like php:7.4-fpm-alpine
ARG BASE_IMAGE

# Base PHP image
#
# Dependencies:
#
#  * FreeTDS: required to connect to MSSQL, and to compile pdo_dblib
#  * libJPEG: for GD and JPEG image-resize
#  * libPNG: for GD and PNG image-resize
FROM $BASE_IMAGE as php-base
LABEL org.opencontainers.image.authors="AwardIT AB <it@awardit.com>" \
  org.opencontainers.image.url="https://groot.crossroads.se/crossroads/modules/magento-lts/-/tree/master/docker" \
  org.opencontainers.image.source="https://groot.crossroads.se/crossroads/modules/magento-lts/-/blob/master/docker/php"
RUN set -xe && \
  # Runtime deps
  apk update && \
  apk add libpng libjpeg-turbo freetds && \
  # Build deps
  apk add --virtual .build-deps $PHPIZE_DEPS libxml2-dev libpng-dev libjpeg-turbo-dev freetds-dev && \
  docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd && \
  docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \
  docker-php-ext-configure gd --enable-gd --with-jpeg && \
  docker-php-ext-install opcache mysqli pdo_mysql pdo_dblib gd soap && \
  # Clear build deps and cache
  apk del .build-deps && \
  rm -rf /var/cache/apk/*
COPY freetds.conf /etc/freetds.conf
COPY php/php.ini $PHP_INI_DIR/php.ini
COPY php/opcache.ini $PHP_INI_DIR/conf.d/opcache.ini

# Image for production jobs
FROM php-base AS php-cli
RUN set -xe && \
  docker-php-ext-install pcntl posix
COPY php/cli/php.ini $PHP_INI_DIR/conf.d/cli.ini

# Image for CLI for development and maintenance
FROM php-cli AS php-dev-cli
# zz-php.ini to force it to load last and overwrite
COPY php/dev/php.ini $PHP_INI_DIR/conf.d/zz-php.ini

# Coverage image with PCOV
FROM php-dev-cli AS php-dev-cov
RUN set -xe && \
# Installation of PCOV is done through PECL:
  mkdir /work && \
  wget -c https://pecl.php.net/get/pcov -O - | tar -xz -C /work && \
  docker-php-ext-install /work/pcov-* && \
  rm -rf /work && \
  echo "pcov.enabled=0" >> $PHP_INI_DIR/php.ini

FROM php-dev-cli AS php-dev-n98
RUN set -xe && \
  wget -c https://files.magerun.net/n98-magerun.phar -O /usr/local/bin/n98-magerun.phar && \
  chmod +x /usr/local/bin/n98-magerun.phar
COPY n98-magerun.yaml /etc/n98-magerun.yaml
ENTRYPOINT ["php", "-d auto_prepend_file=./vendor/autoload.php", "/usr/local/bin/n98-magerun.phar"]

# Base PHP image for FPM
FROM php-base as php-fpm
# fcgi to be able to use a health-check
RUN set -xe && \
  apk add --update --no-cache fcgi
COPY php/fpm/php.ini $PHP_INI_DIR/conf.d/fpm.ini
COPY php/fpm/www.conf /usr/local/etc/php-fpm.d/www.conf
HEALTHCHECK CMD REQUEST_METHOD=GET SCRIPT_NAME=/fpm-status SCRIPT_FILENAME=/fpm-status cgi-fcgi -bind -connect localhost:9000 2>/dev/null | tail +5 | grep -qv 'File not found.'

# Image for FPM for development and maintenance
FROM php-fpm AS php-dev-fpm
# zz-php.ini to force it to load last and overwrite
COPY php/dev/php.ini $PHP_INI_DIR/conf.d/zz-php.ini
