FROM php:8.4-apache-bookworm

WORKDIR /var/www/html

ENV APACHE_DOCUMENT_ROOT=/var/www/html/public \
    COMPOSER_ALLOW_SUPERUSER=1 \
    COMPOSER_HOME=/tmp/composer

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        git \
        libicu-dev \
        libonig-dev \
        libpq-dev \
        libsqlite3-dev \
        libxml2-dev \
        libzip-dev \
        unzip \
    && docker-php-ext-install -j"$(nproc)" \
        bcmath \
        intl \
        mbstring \
        pdo_mysql \
        pdo_pgsql \
        pdo_sqlite \
        xml \
        zip \
    && a2enmod headers rewrite \
    && printf 'ServerName localhost\n' > /etc/apache2/conf-available/server-name.conf \
    && a2enconf server-name \
    && sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' \
        /etc/apache2/apache2.conf \
        /etc/apache2/conf-available/*.conf \
        /etc/apache2/sites-available/*.conf \
    && sed -ri -e 's!AllowOverride None!AllowOverride All!g' \
        /etc/apache2/apache2.conf \
        /etc/apache2/conf-available/*.conf \
    && rm -rf /var/lib/apt/lists/*

COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
COPY docker/entrypoint.sh /usr/local/bin/pharking-entrypoint

RUN chmod +x /usr/local/bin/pharking-entrypoint

COPY composer.json composer.lock ./

ARG COMPOSER_FLAGS="--optimize-autoloader"

RUN composer install --no-interaction --prefer-dist --no-progress --no-scripts $COMPOSER_FLAGS

COPY . .

RUN mkdir -p \
        bootstrap/cache \
        storage/app/public \
        storage/framework/cache \
        storage/framework/sessions \
        storage/framework/testing \
        storage/framework/views \
        storage/logs \
    && chmod -R ug+rwX storage bootstrap/cache \
    && composer dump-autoload --optimize --no-scripts \
    && rm -f bootstrap/cache/*.php

EXPOSE 80

ENTRYPOINT ["pharking-entrypoint"]
CMD ["apache2-foreground"]