FROM php:8.1-cli AS base

RUN apt-get update && apt-get install -y curl libcurl4-openssl-dev libzip-dev unzip \
    && docker-php-ext-install curl pcntl sockets zip \
### PHP Configuration
    && echo "memory_limit = 256m" > /usr/local/etc/php/conf.d/memory_limit.ini \
    && echo "post_max_size = 32M" >> /usr/local/etc/php/conf.d/limit_post.ini \
    && echo "upload_max_filesize = 32M" >> /usr/local/etc/php/conf.d/limit_post.ini \
    && echo "date.timezone = Europe/Paris" > /usr/local/etc/php/conf.d/timezone.ini \
    && echo "max_execution_time = 120" > /usr/local/etc/php/conf.d/max_execution_time.ini \
### Install composer system-wide
    && curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
    && curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
    && php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
    && php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer && rm -rf /tmp/composer-setup.php

WORKDIR /var/www

FROM base AS basedev
ARG UID=1000
ARG GID=1000

RUN usermod -u ${UID} www-data \
    && groupmod -g ${GID} www-data \
    && pecl install -a xdebug uopz \
    && docker-php-ext-enable xdebug \
    && docker-php-ext-enable uopz
COPY ["hosting/php/xdebug.ini", "/usr/local/etc/php/conf.d/"]

FROM basedev AS dev
ENV APP_ENV=dev
VOLUME /var/www

FROM basedev AS test
ENV APP_ENV=test
COPY . /var/www
RUN composer install -o \
    && rm /usr/local/etc/php/conf.d/xdebug.ini
