FROM composer:2 AS vendor WORKDIR /app COPY composer.json composer.lock ./ COPY app/Helpers/app_helpers.php app/Helpers/ RUN composer install --no-dev --prefer-dist --no-interaction --no-progress --no-scripts --ignore-platform-req=ext-gd COPY . . RUN composer dump-autoload --optimize \ && php artisan package:discover --ansi FROM node:20-alpine AS assets WORKDIR /app COPY package.json package-lock.json* pnpm-lock.yaml* yarn.lock* ./ RUN if [ -f package-lock.json ]; then npm ci; \ elif [ -f yarn.lock ]; then yarn install --frozen-lockfile; \ elif [ -f pnpm-lock.yaml ]; then corepack enable && pnpm install --frozen-lockfile; \ else npm install; fi COPY resources ./resources COPY vite.config.js ./ COPY public ./public RUN if [ -f package.json ]; then npm run build; fi FROM php:8.2-fpm RUN apt-get update \ && apt-get install -y --no-install-recommends \ git \ unzip \ libpng-dev \ libonig-dev \ libxml2-dev \ libzip-dev \ libjpeg-dev \ libfreetype6-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install pdo_mysql mbstring xml zip gd \ && rm -rf /var/lib/apt/lists/* WORKDIR /var/www/html COPY --from=vendor /app /var/www/html COPY --from=assets /app/public /var/www/html/public RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache EXPOSE 9000 CMD ["php-fpm"]