|
|
| FROM python:3.11-slim
|
|
|
| ENV PYTHONUNBUFFERED=1 \
|
| PYTHONDONTWRITEBYTECODE=1 \
|
| PORT=7860 \
|
| HOST=0.0.0.0 \
|
| DATA_DIR=/app/data \
|
| INDEX_DIR=/app/data/indexes \
|
| PROCESSED_DIR=/app/data/corpus \
|
| HF_HOME=/app/.cache/huggingface \
|
| KMP_DUPLICATE_LIB_OK=TRUE \
|
| OMP_NUM_THREADS=1 \
|
| ONNX_NUM_THREADS=1 \
|
| ALLOW_NETWORK_CALLS_IN_PIPELINE=false \
|
| USE_GEMINI_GENERATION=true
|
|
|
| WORKDIR /app
|
|
|
| RUN apt-get update && apt-get install -y --no-install-recommends \
|
| build-essential \
|
| curl \
|
| git \
|
| ffmpeg \
|
| libsndfile1 \
|
| && rm -rf /var/lib/apt/lists/*
|
|
|
| COPY requirements.txt .
|
| RUN pip install --no-cache-dir --upgrade pip && \
|
| pip install --no-cache-dir -r requirements.txt
|
|
|
| RUN python -c "from transformers import AutoTokenizer, AutoModel; from huggingface_hub import snapshot_download; AutoTokenizer.from_pretrained('intfloat/multilingual-e5-small'); AutoModel.from_pretrained('intfloat/multilingual-e5-small'); snapshot_download('prompt-security/Prompt-Guard-86M_onnx', allow_patterns=['model.onnx', 'tokenizer.json', 'tokenizer_config.json', 'special_tokens_map.json'])"
|
|
|
| COPY svarasetu/ ./svarasetu/ |
| COPY app.py . |
| COPY data/ ./data/ |
| COPY tests/ ./tests/ |
| COPY docs/ ./docs/ |
|
|
| ARG SVARASETU_ASSETS_REPO=NoiwaDEX/SvaraSetu-assets |
| ARG SVARASETU_ASSETS_REVISION=b1138003b37d96e38371817b4555de1672721955 |
| RUN python -c "from huggingface_hub import snapshot_download; snapshot_download('${SVARASETU_ASSETS_REPO}', revision='${SVARASETU_ASSETS_REVISION}', allow_patterns=['parts/svarasetu-assets.part-*'], local_dir='/tmp/svarasetu-assets')" && \ |
| cat /tmp/svarasetu-assets/parts/svarasetu-assets.part-* > /tmp/svarasetu-assets.tar.gz && \ |
| echo "9e18d3108dae51bd580d12bf5e947d60bda9bcf9fe9d4f614a0671ebf67b499e /tmp/svarasetu-assets.tar.gz" | sha256sum -c - && \ |
| tar -xzf /tmp/svarasetu-assets.tar.gz -C /app && \ |
| rm -rf /tmp/svarasetu-assets /tmp/svarasetu-assets.tar.gz |
|
|
| RUN useradd -m -u 1000 user && \ |
| chown -R user:user /app |
| USER user
|
|
|
| EXPOSE 7860
|
|
|
| HEALTHCHECK --interval=30s --timeout=5s --start-period=90s --retries=3 \
|
| CMD curl -fsS http://127.0.0.1:7860/ready || exit 1
|
|
|
| CMD ["uvicorn", "svarasetu.serve:app", "--host", "0.0.0.0", "--port", "7860"]
|
| |