# Stage 1: Build Vue (tetap sama) FROM node:20 as node_builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # Stage 2: Laravel FROM php:8.3-fpm RUN apt-get update && apt-get install -y \ git unzip libzip-dev libpng-dev libonig-dev libxml2-dev curl \ && docker-php-ext-install pdo_mysql zip gd mbstring exif pcntl bcmath \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Cleanup untuk ukuran kecil COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html # Copy source code COPY . . # Copy hasil build Vue COPY --from=node_builder /app/public/build /var/www/html/public/build RUN composer install --no-dev --optimize-autoloader RUN php artisan storage:link || true RUN php artisan config:cache && php artisan route:cache && php artisan view:cache # Optimasi cache untuk performa laporan/transaksi # Set permission dan user non-root 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 EXPOSE 9000 CMD ["php-fpm"]