|
|
| FROM node:20-slim AS frontend-builder
|
| WORKDIR /app/frontend
|
| COPY src/agora/frontend/package*.json ./
|
| RUN npm install
|
| COPY src/agora/frontend/ ./
|
| RUN npm run build
|
|
|
|
|
| FROM python:3.12-slim
|
| WORKDIR /app
|
|
|
| ENV PYTHONUNBUFFERED=1 \
|
| DEBIAN_FRONTEND=noninteractive \
|
| PYTHONPATH=/app:/app/src/agora/backend:$PYTHONPATH
|
|
|
|
|
| RUN apt-get update && apt-get install -y \
|
| git build-essential curl \
|
| && rm -rf /var/lib/apt/lists/*
|
|
|
|
|
| RUN curl -LsSf https://astral.sh/uv/install.sh | sh
|
| ENV PATH="/root/.local/bin:$PATH"
|
|
|
|
|
| COPY pyproject.toml .
|
| COPY uv.lock .
|
|
|
|
|
| COPY src/agora/backend/ ./src/agora/backend/
|
|
|
|
|
| COPY --from=frontend-builder /app/frontend/dist ./src/agora/frontend/dist
|
|
|
|
|
| RUN uv sync --frozen --no-dev --prerelease=allow
|
|
|
| ENV PATH="/app/.venv/bin:$PATH"
|
|
|
|
|
| RUN useradd -m -u 1000 user
|
|
|
|
|
| ENV HF_HOME=/app/hf_cache \
|
| TRANSFORMERS_CACHE=/app/hf_cache \
|
| NUMBA_CACHE_DIR=/app/numba_cache
|
|
|
|
|
| RUN mkdir -p /app/hf_cache /app/numba_cache && \
|
| chown -R user:user /app
|
|
|
|
|
| USER user
|
|
|
|
|
| RUN python -c "from transformers import pipeline; pipeline('sentiment-analysis', model='ProsusAI/finbert', device=-1)"
|
|
|
|
|
| EXPOSE 7860
|
|
|
|
|
| CMD ["uvicorn", "src.agora.backend.main:app", "--host", "0.0.0.0", "--port", "7860"]
|
|
|