### ===============================
### STAGE 1: FRONTEND BUILD
### ===============================
FROM node:20-alpine AS frontend

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY resources resources
COPY vite.config.* .
RUN npm run build


### ===============================
### STAGE 2: PHP / LARAVEL
### ===============================
FROM dunglas/frankenphp:1-php8.3

ENV SERVER_NAME=":80"
WORKDIR /app

# System deps
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    libicu-dev \
    pkg-config \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install \
        gd pdo pdo_mysql zip bcmath intl exif \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Composer
COPY composer.json composer.lock ./
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN composer install --no-dev --optimize-autoloader --no-interaction

# App source
COPY . .

# COPY HASIL VITE BUILD
COPY --from=frontend /app/public/build public/build

RUN php artisan config:clear \
 && php artisan view:clear \
 && php artisan route:clear

