FROM node:20-alpine AS frontend-builder WORKDIR /frontend COPY frontend/package*.json ./ RUN npm ci COPY frontend ./ RUN npm run build FROM python:3.11-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 WORKDIR /app COPY requirements.txt ./ COPY doc_intelligence/requirements.txt ./doc_intelligence/requirements.txt RUN pip install --upgrade pip && pip install -r requirements.txt COPY app.py README.md .env.example ./ COPY --from=frontend-builder /frontend/dist ./frontend/dist COPY doc_intelligence/src ./doc_intelligence/src COPY doc_intelligence/configs ./doc_intelligence/configs COPY doc_intelligence/reports/classification_artifacts ./doc_intelligence/reports/classification_artifacts # HF stores model artifacts in Git LFS. Resolve the real pickle during the # image build so the runtime never attempts to unpickle an LFS pointer file. RUN python -c "from urllib.request import urlretrieve; urlretrieve('https://huggingface.co/spaces/vettri06/Document_intelligence/resolve/main/doc_intelligence/reports/classification_artifacts/logistic_regression.pkl?download=true', '/app/doc_intelligence/reports/classification_artifacts/logistic_regression.pkl')" COPY doc_intelligence/reports/best_model_card.md ./doc_intelligence/reports/best_model_card.md COPY doc_intelligence/data/raw/invoice/ffcy0002.png ./doc_intelligence/data/raw/invoice/ffcy0002.png COPY doc_intelligence/data/raw/invoice/fflb0108.png ./doc_intelligence/data/raw/invoice/fflb0108.png COPY doc_intelligence/data/raw/receipt/cord_test-000_0.png ./doc_intelligence/data/raw/receipt/cord_test-000_0.png COPY doc_intelligence/data/raw/receipt/cord_test-000_1.png ./doc_intelligence/data/raw/receipt/cord_test-000_1.png COPY doc_intelligence/data/raw/application_form/funsd_0000971160.png ./doc_intelligence/data/raw/application_form/funsd_0000971160.png COPY doc_intelligence/data/raw/application_form/funsd_0000989556.png ./doc_intelligence/data/raw/application_form/funsd_0000989556.png # Resolve the bundled sample images from LFS as real image bytes as well. RUN python -c "from urllib.request import urlretrieve; files=['doc_intelligence/data/raw/invoice/ffcy0002.png','doc_intelligence/data/raw/invoice/fflb0108.png','doc_intelligence/data/raw/receipt/cord_test-000_0.png','doc_intelligence/data/raw/receipt/cord_test-000_1.png','doc_intelligence/data/raw/application_form/funsd_0000971160.png','doc_intelligence/data/raw/application_form/funsd_0000989556.png']; base='https://huggingface.co/spaces/vettri06/Document_intelligence/resolve/main/'; [urlretrieve(base + path + '?download=true', '/app/' + path) for path in files]" EXPOSE 7860 CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]