FROM php:8.4-cli RUN apt-get update && apt-get install -y \ git unzip curl zip ca-certificates gnupg \ libzip-dev \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ libonig-dev \ libxml2-dev \ libsqlite3-dev \ && docker-php-ext-install \ zip \ pdo \ pdo_mysql \ pdo_sqlite \ mbstring \ exif \ pcntl \ bcmath \ gd \ && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* COPY --from=composer:2 /usr/bin/composer /usr/bin/composer RUN useradd -m -u 1000 user ENV HOME=/home/user RUN mkdir -p /home/user/app && chown user:user /home/user/app WORKDIR /home/user/app USER user # PHP deps — cached unless composer.lock changes COPY --chown=user:user composer.json composer.lock ./ RUN composer install --no-dev --optimize-autoloader --no-interaction --no-scripts # Node deps — cached unless package-lock.json changes COPY --chown=user:user package.json package-lock.json ./ RUN npm ci # Build-time variables (set as HuggingFace Space Variables, not Secrets) ARG RAG_API_BASE_URL ARG VITE_APP_NAME="RAG Hub" ARG APP_KEY=base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= ENV RAG_API_BASE_URL=$RAG_API_BASE_URL \ VITE_APP_NAME=$VITE_APP_NAME \ APP_KEY=$APP_KEY # Source code COPY --chown=user:user . . RUN mkdir -p storage/framework/{sessions,views,cache/data} bootstrap/cache \ && php artisan package:discover --ansi \ && php artisan config:clear \ && php artisan route:clear \ && npm run build \ && rm -rf node_modules \ && php artisan view:clear EXPOSE 7860 CMD rm -f bootstrap/cache/config.php \ && php artisan config:clear \ && php artisan cache:clear \ && php artisan serve --host=0.0.0.0 --port="${PORT:-7860}"