| 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}"] |