# syntax=docker/dockerfile:1.6
FROM php:8.3-fpm-alpine AS base

RUN apk add --no-cache \
        bash git curl libpng-dev libjpeg-turbo-dev freetype-dev \
        oniguruma-dev libxml2-dev icu-dev libzip-dev mariadb-client \
        nodejs npm supervisor nginx tzdata \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        bcmath gd intl mbstring pdo_mysql opcache pcntl zip exif

# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

# Install dependencies first for better caching.
COPY composer.json composer.lock ./
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist

COPY package.json package-lock.json* ./
RUN if [ -f package-lock.json ]; then npm ci; fi

COPY . .
RUN composer dump-autoload --optimize \
    && chown -R www-data:www-data storage bootstrap/cache \
    && chmod -R ug+rwX storage bootstrap/cache

# Nginx + supervisor configs (place under docker/ in your repo).
COPY docker/nginx.conf /etc/nginx/http.d/default.conf
COPY docker/supervisord.conf /etc/supervisord.conf
COPY docker/php.ini /usr/local/etc/php/conf.d/zz-app.ini

EXPOSE 80
CMD ["supervisord", "-c", "/etc/supervisord.conf"]
