### =============================== ### 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