Spaces:
Runtime error
Runtime error
| # ─── Base Image ─────────────────────────────────────────────── | |
| FROM python:3.11-slim | |
| # ─── System Setup ───────────────────────────────────────────── | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential git curl && \ | |
| rm -rf /var/lib/apt/lists/* | |
| # ─── Non-root User ──────────────────────────────────────────── | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| ENV PATH="/home/user/.local/bin:$PATH" | |
| # ─── Workdir ───────────────────────────────────────────────── | |
| WORKDIR /app | |
| # ─── Install Requirements ──────────────────────────────────── | |
| COPY --chown=user requirements.txt requirements.txt | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # ─── Copy Project and Install Package ───────────────────────── | |
| COPY --chown=user . /app | |
| RUN pip install -e . | |
| # ─── Expose Ports ──────────────────────────────────────────── | |
| # Streamlit default = 7860 | |
| # Gradio default = 7860 | |
| # Chainlit default = 8000 | |
| EXPOSE 7860 8000 | |
| # ─── Environment Variable to Pick Framework ─────────────────── | |
| ENV APP_MODE=streamlit | |
| # ─── Entrypoint ─────────────────────────────────────────────── | |
| # Detect whether app.py is at /app/app.py or /app/omniscientframework/app.py | |
| CMD MODE=$(cat .app_mode 2>/dev/null || echo "$APP_MODE") && \ | |
| if [ "$MODE" = "streamlit" ]; then \ | |
| if [ -f "app.py" ]; then \ | |
| echo "🚀 Launching Streamlit (root-level app.py)"; \ | |
| streamlit run app.py --server.port=7860 --server.address=0.0.0.0; \ | |
| elif [ -f "omniscientframework/app.py" ]; then \ | |
| echo "🚀 Launching Streamlit (package-level app.py)"; \ | |
| streamlit run omniscientframework/app.py --server.port=7860 --server.address=0.0.0.0; \ | |
| else \ | |
| echo "❌ Error: app.py not found."; exit 1; \ | |
| fi; \ | |
| elif [ "$MODE" = "gradio" ]; then \ | |
| if [ -f "gradio_app.py" ]; then \ | |
| python gradio_app.py; \ | |
| elif [ -f "omniscientframework/gradio_app.py" ]; then \ | |
| python omniscientframework/gradio_app.py; \ | |
| else \ | |
| echo "❌ Error: gradio_app.py not found."; exit 1; \ | |
| fi; \ | |
| elif [ "$MODE" = "chainlit" ]; then \ | |
| if [ -f "chainlit_app.py" ]; then \ | |
| chainlit run chainlit_app.py --host 0.0.0.0 --port 8000; \ | |
| elif [ -f "omniscientframework/chainlit_app.py" ]; then \ | |
| chainlit run omniscientframework/chainlit_app.py --host 0.0.0.0 --port 8000; \ | |
| else \ | |
| echo "❌ Error: chainlit_app.py not found."; exit 1; \ | |
| fi; \ | |
| else \ | |
| echo "❌ Unknown APP_MODE: $MODE" && exit 1; \ | |
| fi | |