diff --git a/Dockerfile b/Dockerfile index 1690566..a6af372 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,36 @@ ### =============================== -### STAGE 1: FRONTEND BUILD +### STAGE 1: COMPOSER +### =============================== +FROM composer:latest AS composer + +WORKDIR /app +COPY composer.json composer.lock ./ +RUN composer install --no-dev --optimize-autoloader --no-interaction + + +### =============================== +### STAGE 2: FRONTEND BUILD ### =============================== FROM node:20-alpine AS frontend WORKDIR /app +# COPY vendor dari composer stage +COPY --from=composer /app/vendor vendor + COPY package*.json ./ RUN npm install COPY resources resources COPY vite.config.* . +COPY tailwind.config.* . +COPY postcss.config.* . + RUN npm run build ### =============================== -### STAGE 2: PHP / LARAVEL +### STAGE 3: PHP / RUNTIME ### =============================== FROM dunglas/frankenphp:1-php8.3 @@ -23,30 +39,19 @@ 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/* + 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 \ + && 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 app COPY . . -# COPY HASIL VITE BUILD +# Copy vendor +COPY --from=composer /app/vendor vendor + +# Copy Vite build COPY --from=frontend /app/public/build public/build -RUN php artisan config:clear \ - && php artisan view:clear \ - && php artisan route:clear - +RUN php artisan optimize:clear