diff --git a/Dockerfile b/Dockerfile index a6af372..1b9149a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,21 @@ ### =============================== -### STAGE 1: COMPOSER +### STAGE 1: COMPOSER (PHP 8.3) ### =============================== -FROM composer:latest AS composer +FROM dunglas/frankenphp:1-php8.3 AS composer WORKDIR /app + +# Install PHP extensions DULU +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 zip intl exif \ + && rm -rf /var/lib/apt/lists/* + +# Install Composer +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + COPY composer.json composer.lock ./ RUN composer install --no-dev --optimize-autoloader --no-interaction @@ -15,7 +27,7 @@ FROM node:20-alpine AS frontend WORKDIR /app -# COPY vendor dari composer stage +# Vendor DIBUTUHKAN oleh Filament COPY --from=composer /app/vendor vendor COPY package*.json ./ @@ -30,14 +42,14 @@ RUN npm run build ### =============================== -### STAGE 3: PHP / RUNTIME +### STAGE 3: RUNTIME ### =============================== FROM dunglas/frankenphp:1-php8.3 ENV SERVER_NAME=":80" WORKDIR /app -# System deps +# PHP extensions runtime RUN apt-get update && apt-get install -y \ libpng-dev libjpeg-dev libfreetype6-dev \ libzip-dev libicu-dev pkg-config \ @@ -45,13 +57,11 @@ RUN apt-get update && apt-get install -y \ && docker-php-ext-install gd pdo pdo_mysql zip bcmath intl exif \ && rm -rf /var/lib/apt/lists/* -# Copy app +# App source COPY . . -# Copy vendor +# Vendor & assets COPY --from=composer /app/vendor vendor - -# Copy Vite build COPY --from=frontend /app/public/build public/build RUN php artisan optimize:clear