FROM php:8.1-alpine AS php


FROM php AS build-extensions
RUN apk --no-cache add autoconf curl-dev g++ libzip-dev linux-headers make unzip \
    && docker-php-ext-install calendar curl pcntl sockets zip \
    && pecl install -a redis \
    && mkdir /usr/local/lib/php/extensions/compiled \
    && export PHP_EXT_DIR=$(php-config --extension-dir) \
    && cp ${PHP_EXT_DIR}/* /usr/local/lib/php/extensions/compiled


FROM php AS base
COPY --from=build-extensions /usr/local/lib/php/extensions/compiled /usr/local/lib/php/extensions/compiled
RUN apk --no-cache add curl libzip unzip \
    && export PHP_EXT_DIR=$(php-config --extension-dir) \
    && cp /usr/local/lib/php/extensions/compiled/* ${PHP_EXT_DIR} \
    && docker-php-ext-enable calendar curl pcntl redis 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 --version="2.7.2" \
    && rm -rf /tmp/composer-setup.php

WORKDIR /var/www
STOPSIGNAL SIGKILL


FROM build-extensions AS build-xdebug
RUN pecl install -a xdebug-3.4.0 \
    && export PHP_EXT_DIR=$(php-config --extension-dir) \
    && cp ${PHP_EXT_DIR}/* /usr/local/lib/php/extensions/compiled


FROM base AS basedev
COPY ["hosting/php/developement.ini", "/usr/local/etc/php/conf.d/"]
RUN su -p www-data -s /bin/sh -c "COMPOSER_HOME=/home/www-data/.composer composer global config allow-plugins.gmta/composer-velocita true" \
    && su -p www-data -s /bin/sh -c "COMPOSER_HOME=/home/www-data/.composer composer global require gmta/composer-velocita" \
    && su -p www-data -s /bin/sh -c "COMPOSER_HOME=/home/www-data/.composer composer velocita:enable https://vetinweb:7Pl9AZeqG8k2Nkkq9x8GmSPwU@velocita.vetinweb.com/"


FROM basedev AS dev
COPY --from=build-xdebug /usr/local/lib/php/extensions/compiled/xdebug.so /usr/local/lib/php/extensions/compiled/xdebug.so
COPY ["hosting/php/xdebug.ini", "/usr/local/etc/php/conf.d/"]

RUN apk --no-cache add bash \
    && export PHP_EXT_DIR=$(php-config --extension-dir) \
    && cp /usr/local/lib/php/extensions/compiled/* ${PHP_EXT_DIR} \
    && docker-php-ext-enable xdebug


FROM basedev AS test
ENV APP_ENV=test
COPY . /var/www
RUN COMPOSER_ALLOW_SUPERUSER=1 composer install -o
