FROM php:8.2-fpm

# System deps
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       git unzip libzip-dev libicu-dev libonig-dev libpng-dev libxml2-dev \
       curl \
    && rm -rf /var/lib/apt/lists/*

# PHP extensions
RUN docker-php-ext-configure intl \
    && docker-php-ext-install -j$(nproc) pdo_mysql zip intl \
    && docker-php-ext-enable opcache

# PCNTL for queue workers
RUN docker-php-ext-install pcntl

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

WORKDIR /var/www/html

# Copy only composer files first (better caching), then install
COPY composer.json composer.lock ./
RUN composer install --no-dev --no-interaction --prefer-dist --no-scripts --no-autoloader \
    || composer install --no-dev --no-interaction --prefer-dist --no-scripts --no-autoloader

# Copy source
COPY . .

# Optimize autoload after full source present
RUN composer dump-autoload --optimize

# Permissions for Laravel storage and cache
RUN chown -R www-data:www-data storage bootstrap/cache \
    && find storage -type d -exec chmod 775 {} \; \
    && find storage -type f -exec chmod 664 {} \; \
    && chmod -R 775 bootstrap/cache

USER www-data

EXPOSE 9000

CMD ["php-fpm"]


