ARG PARENT_IMAGE=086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:debian12
FROM $PARENT_IMAGE AS parent

LABEL parent-images=debian12,debian-php82

USER root 

# Run updates and install packages
RUN apt-get -y update \
  && apt-get -y upgrade \
  && apt-get -y install \
  apt-transport-https \
  bzip2 \
  curl \
  ca-certificates \
  libbz2-dev \
  libcurl4-openssl-dev \
  libdb-dev \
  libevent-dev \
  libfreetype6-dev \
  libgmp-dev \
  libjpeg-dev \
  libjpeg62-turbo-dev \
  libmcrypt-dev \
  libmemcached-dev \
  libpng-dev \
  libssl-dev \
  libtiff-dev \
  libxml2-dev \
  libzip-dev \
  lsb-release \
  memcached \
  libmhash2 \
  libmhash-dev \
  unzip \
  wget \
  && apt-get -y clean \
  && rm -rf /var/lib/apt/lists/*

# Add  repository GPG key
RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

# Add the repository 
RUN sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

# Install PHP and necessary extensions
RUN apt-get -y update \
  && apt-get -y install \
  php8.2 \
  php8.2-apcu \
  php8.2-bcmath \
  php8.2-cli \
  php8.2-common \
  php8.2-curl \
  php8.2-dev \
  php8.2-gd \
  php8.2-gmp \
  php8.2-ldap \
  php8.2-mbstring \
  php8.2-mysqlnd \
  php8.2-opcache \
  php-pear \
  php8.2-igbinary \
  php8.2-imagick \
  php8.2-mcrypt \
  php8.2-memcache \
  php8.2-memcached \
  php8.2-redis \
  php8.2-ssh2 \
  php8.2-uploadprogress \
  php8.2-yaml \
  php8.2-zip \
  php8.2-pgsql \
  php8.2-redis \
  php8.2-soap \
  php8.2-xml \
  && apt-get -y clean \
  && rm -rf /var/lib/apt/lists/*

COPY php.ini /etc/php/8.2/cli/php.ini

# We need to override these files, so the simplest approach is to simply replace them
COPY 10-opcache.ini   /etc/php/8.2/cli/conf.d/10-opcache.ini
COPY 20-apcu.ini      /etc/php/8.2/cli/conf.d/20-apcu.ini
COPY 25-memcached.ini /etc/php/8.2/cli/conf.d/25-memcached.ini

# Set default values for settings that can be overridden 
ENV PHP_SESSION_SAVE_HANDLER=files
ENV PHP_SESSION_SAVE_PATH=""
ENV PHP_MAX_INPUT_VARS=8000
ENV PHP_MEMORY_LIMIT=512M
ENV PHP_SHORT_OPEN_TAG=On
ENV PHP_SERIALIZE_PRECISION=100
ENV PHP_POST_MAX_SIZE=900M
ENV PHP_ENABLE_DL=On
ENV PHP_UPLOAD_MAX_FILESIZE=900M
ENV PHP_DATE_TIMEZONE=America/New_York
ENV PHP_SESSION_GC_MAXLIFETIME=7200
ENV PHP_MAX_EXECUTION_TIME=30
ENV PHP_SESSION_SID_LENGTH=48
ENV PHP_SESSION_SID_BITS_PER_CHARACTER=5

COPY 10-configurable-settings.ini /etc/php/8.2/cli/conf.d/10-configurable-settings.ini

RUN rm -rf /etc/php/8.2/apache2/* \
  && ln -s /etc/php/8.2/cli/php.ini /etc/php/8.2/apache2/php.ini \
  && ln -s /etc/php/8.2/cli/conf.d/ /etc/php/8.2/apache2/conf.d

# Make sure sandboxed location is added to system environment variables
ENV PATH=/usr/bin:/usr/sbin${PATH:+:${PATH}}
ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

COPY composer-install.sh /tmp/composer-install.sh
RUN chmod +x /tmp/composer-install.sh && /bin/bash /tmp/composer-install.sh && mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer

FROM parent AS deploy

ENV PHP_DISPLAY_ERRORS=false
ENV PHP_SESSION_COOKIE_SECURE=1
ENV PHP_SESSION_COOKIE_HTTPONLY=1

FROM parent AS dev

ENV PHP_DISPLAY_ERRORS=true
ENV PHP_SESSION_COOKIE_SECURE=0
ENV PHP_SESSION_COOKIE_HTTPONLY=0

# Run container as the worker user
USER worker
