FROM python:3.11-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ PORT=7860 WORKDIR /app RUN adduser --disabled-password --gecos "" appuser COPY requirements.txt . RUN pip install --upgrade pip && pip install -r requirements.txt COPY backend ./backend COPY frontend ./frontend COPY main.py ./main.py RUN mkdir -p /app/backend/data && chown -R appuser:appuser /app USER appuser EXPOSE 7860 HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ CMD python -c "import os, urllib.request; urllib.request.urlopen(f'http://127.0.0.1:{os.getenv(\"PORT\", \"7860\")}/health', timeout=3)" CMD ["sh", "-c", "uvicorn main:app --host 0.0.0.0 --port ${PORT}"]