# Base image to use, must be a PHP Alpine image with FPM, like php:7.4-fpm-alpine
ARG BASE_IMAGE
# Number of CPUs available, needs to be renewed after every FROM
ARG JOBS=1

# 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
ARG JOBS
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 -j${JOBS} 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
ARG JOBS
RUN set -xe && \
  docker-php-ext-install -j${JOBS} pcntl posix && \
  rm -rf /var/cache/apk/*
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
ARG JOBS
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 -j${JOBS} /work/pcov-* && \
  rm -rf /work && \
  echo "pcov.enabled=0" >> $PHP_INI_DIR/php.ini && \
  rm -rf /var/cache/apk/*

FROM php-dev-cli AS php-dev-cli-xdebug
ARG JOBS
RUN set -xe && \
  mkdir /work && \
  wget -c https://pecl.php.net/get/xdebug -O - | tar -xz -C /work && \
  docker-php-ext-install -j${JOBS} /work/xdebug-* && \
  rm -rf /work && \
  rm -rf /var/cache/apk/*
COPY php/dev/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.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 memory_limit=2G", "-d auto_prepend_file=./vendor/autoload.php", "/usr/local/bin/n98-magerun.phar"]

# Base PHP image for FPM
FROM php-base as php-base-fpm
# fcgi to be able to use a health-check
RUN set -xe && \
  apk add --update --no-cache fcgi && \
  wget -O /usr/local/bin/php-fpm-healthcheck \
    https://raw.githubusercontent.com/renatomefi/php-fpm-healthcheck/master/php-fpm-healthcheck && \
    chmod +x /usr/local/bin/php-fpm-healthcheck && \
  rm -rf /var/cache/apk/*
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
# This is a simple readiness-probe by default,
# see https://github.com/renatomefi/php-fpm-healthcheck for more options
HEALTHCHECK CMD php-fpm-healthcheck 

# Production base-image for FPM
FROM php-base-fpm AS php-fpm

# Image for FPM for development and maintenance
FROM php-base-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

FROM php-dev-fpm AS php-dev-fpm-xdebug
ARG JOBS
RUN set -xe && \
  mkdir /work && \
  wget -c https://pecl.php.net/get/xdebug -O - | tar -xz -C /work && \
  docker-php-ext-install -j${JOBS} /work/xdebug-* && \
  rm -rf /work && \
  rm -rf /var/cache/apk/*
COPY php/dev/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini
