FROM node:18 AS node-base # Development stage FROM node-base AS development WORKDIR /var/www COPY package*.json ./ RUN npm install COPY . . EXPOSE 5173 CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] # Production stage FROM php:8.2-fpm AS production WORKDIR /var/www # Install PHP extensions RUN apt-get update && apt-get install -y \ git curl zip unzip libpng-dev libonig-dev libxml2-dev libzip-dev \ && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip # Install Node.js RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ && apt-get install -y nodejs # Install Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Copy application files COPY . . # Install dependencies RUN composer install --no-dev --optimize-autoloader # Install and build frontend assets RUN npm install \ && npm run build \ && ls -la public/build \ && mkdir -p public/assets \ && cp -r public/build/* public/assets/ \ && ls -la public/assets \ && rm -rf node_modules \ && rm -rf public/build # Laravel caches RUN php artisan config:clear \ && php artisan route:clear \ && php artisan view:clear \ && php artisan optimize RUN php artisan storage:link # Permissions RUN chown -R www-data:www-data /var/www && chmod -R 755 /var/www/storage /var/www/public EXPOSE 9000 CMD ["php-fpm"]