FROM php:8.3-fpm-alpine

# Install system dependencies
RUN apk add --no-cache \
    git curl zip unzip libzip-dev \
    libpng-dev libjpeg-turbo-dev freetype-dev \
    postgresql-dev oniguruma-dev \
    icu-dev supervisor nginx

# Install PHP extensions
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
 && docker-php-ext-install \
    pdo pdo_pgsql pgsql \
    mbstring zip gd \
    bcmath pcntl \
    opcache intl

# Install Redis extension
RUN pecl install redis && docker-php-ext-enable redis

# Install Composer
COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

# Copy composer files first (layer cache)
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader --no-scripts --no-interaction

# Copy application code
COPY . .

# Run post-install scripts
RUN composer run-script post-autoload-dump || true

# Set permissions
RUN chown -R www-data:www-data /var/www/html \
 && chmod -R 755 /var/www/html/storage \
 && chmod -R 755 /var/www/html/bootstrap/cache

# PHP-FPM config
COPY docker/backend/php-fpm.conf /usr/local/etc/php-fpm.d/www.conf
COPY docker/backend/php.ini /usr/local/etc/php/conf.d/custom.ini

# Nginx config (for PHP-FPM mode)
COPY docker/backend/nginx-backend.conf /etc/nginx/http.d/default.conf

# Supervisor config (nginx + php-fpm)
COPY docker/backend/supervisord.conf /etc/supervisord.conf

# Cache config at build time (override with env at runtime)
RUN php artisan config:cache || true \
 && php artisan route:cache  || true \
 && php artisan view:cache   || true

EXPOSE 9000

ENTRYPOINT ["sh", "-c", "php artisan migrate --force && php artisan db:seed --class=DatabaseSeeder --force 2>/dev/null || true && php-fpm"]
