Spaces:
Sleeping
Sleeping
| # ββ Base image ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| FROM python:3.11-slim | |
| # ββ Create non-root user (HF best practice) βββββββββββββββββββββββββββββββββ | |
| RUN useradd -m -u 1000 user | |
| # ββ System dependencies ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| curl \ | |
| git \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ββ Working directory ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| WORKDIR /app | |
| # ββ Python dependencies ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir --upgrade pip \ | |
| && pip install --no-cache-dir -r requirements.txt \ | |
| && pip install --no-cache-dir supervisor | |
| # ββ Application code βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COPY . . | |
| # ββ Download model checkpoint ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN python scripts/download_model.py | |
| # ββ Permissions (IMPORTANT for HF) βββββββββββββββββββββββββββββββββββββββββββ | |
| RUN chown -R user:user /app | |
| # Switch to non-root AFTER setup | |
| USER user | |
| # ββ Environment ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ENV API_URL=http://localhost:8000 | |
| ENV STREAMLIT_SERVER_PORT=7860 | |
| ENV STREAMLIT_SERVER_ADDRESS=0.0.0.0 | |
| ENV STREAMLIT_BROWSER_GATHER_USAGE_STATS=false | |
| ENV PYTHONUNBUFFERED=1 | |
| # ENV STRESS_DB_PATH=/app/stress_detection.db | |
| ENV STRESS_DB_PATH=/data/stress_detection.db | |
| # ββ Expose port ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| EXPOSE 7860 | |
| # ββ Supervisor config ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf | |
| # ββ Start services βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] |