# Base PHP image for CLI
FROM php:7.4-alpine as php-base
# libmcrypt is required for mcrypt module
RUN apk add --update --no-cache libmcrypt-dev && \
# Installation of Mcrypt is done through PECL:
  mkdir /work && \
  wget -c https://pecl.php.net/get/mcrypt -O - | tar -xz -C /work && \
  docker-php-ext-install pdo pdo_mysql mysqli /work/mcrypt-* && \
  rm -rf /work

# Test image with xdebug for better errors
FROM php-base AS php-test
RUN mkdir /work && \
  wget -c https://pecl.php.net/get/xdebug -O - | tar -xz -C /work && \
  docker-php-ext-install /work/xdebug-* && \
  rm -rf /work && \
  echo "xdebug.show_error_trace=On" >> $PHP_INI_DIR/php.ini

FROM php-test AS php-coverage
# Installation of Pcov is done through PECL:
RUN 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-base as php-fpm
# fcgi to be able to use a health-check
RUN apk add --update --no-cache fcgi && \
# Enable health checking on /status
  echo "pm.status_path = /status" >> /usr/local/etc/php-fpm.d/zz-docker.conf
HEALTHCHECK CMD REQUEST_METHOD=GET SCRIPT_NAME=/status SCRIPT_FILENAME=/status cgi-fcgi -bind -connect localhost:9000 2>/dev/null | tail +5 | grep -qv 'File not found.'
