FROM node:20-bookworm-slim AS frontend WORKDIR /app COPY package.json package-lock.json ./ COPY postcss.config.js tailwind.config.js vite.config.js ./ COPY resources ./resources RUN npm ci && npm run build FROM php:8.2-apache # Install system dependencies RUN apt-get update && apt-get install -y \ git \ unzip \ libsqlite3-dev \ libzip-dev \ zip \ libpng-dev \ libonig-dev \ libxml2-dev \ libjpeg-dev \ libfreetype6-dev \ libwebp-dev \ zlib1g-dev \ python3-pip \ ffmpeg \ curl \ && pip3 install --no-cache-dir edge-tts "huggingface_hub[cli,hf_transfer]" --break-system-packages \ && docker-php-ext-install pdo_mysql pdo_sqlite zip mbstring exif pcntl bcmath \ && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \ && docker-php-ext-install -j$(nproc) gd \ && a2enmod rewrite \ && sed -i 's/max_execution_time = 30/max_execution_time = 300/' /usr/local/etc/php/php.ini-production \ && sed -i 's/memory_limit = 128M/memory_limit = 512M/' /usr/local/etc/php/php.ini-production \ && cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini # Composer COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html # Log and PID directories writable at runtime on HF Spaces. ENV APACHE_LOG_DIR=/tmp ENV APACHE_PID_FILE=/tmp/apache2.pid ENV APACHE_RUN_DIR=/tmp ENV APACHE_LOCK_DIR=/tmp # Copy Apache config COPY laravel.conf /etc/apache2/sites-available/000-default.conf RUN echo "Listen 7860" > /etc/apache2/ports.conf # Copy source code COPY . /var/www/html COPY --from=frontend /app/public/build /var/www/html/public/build # Install PHP dependencies RUN composer install --no-dev --optimize-autoloader --no-interaction # Create runtime env RUN cp .env.example .env \ && sed -i 's|^APP_ENV=.*|APP_ENV=production|' .env \ && sed -i 's|^APP_DEBUG=.*|APP_DEBUG=true|' .env \ && sed -i 's|^APP_URL=.*|APP_URL=https://medilis-teknolis.hf.space|' .env \ && sed -i 's|^DB_DATABASE=.*|DB_DATABASE=/var/www/html/database/database.sqlite|' .env \ && sed -i 's|^FREEPIK_API_KEY=.*|FREEPIK_API_KEY=false|' .env \ && sed -i 's|^TOOLS_HF_ONLY=.*|TOOLS_HF_ONLY=true|' .env \ && php artisan key:generate --force # Final database and permissions setup RUN mkdir -p /var/www/html/database \ /var/www/html/storage/framework/cache/data \ /var/www/html/storage/framework/sessions \ /var/www/html/storage/framework/views \ /var/www/html/storage/logs \ && touch /var/www/html/database/database.sqlite \ && chmod -R 777 /var/www/html/storage /var/www/html/bootstrap/cache /var/www/html/database \ && php artisan migrate --force \ && php artisan db:seed --force \ && php artisan storage:link --force \ && chown -R www-data:www-data /var/www/html COPY entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh EXPOSE 7860 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]