FROM node:22-bookworm-slim AS frontend WORKDIR /build COPY package*.json ./ RUN npm ci COPY tsconfig.json vite.config.js index.html t5config_large.json ./ COPY src ./src COPY public ./public COPY scripts/vendor.mjs ./scripts/vendor.mjs RUN npm run build FROM python:3.10-slim RUN useradd -m -u 1000 user WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir --upgrade pip && pip install --no-cache-dir torch==2.7.1+cpu --extra-index-url https://download.pytorch.org/whl/cpu && pip install --no-cache-dir -r requirements.txt COPY --chown=user server.py atlas_service.py ouroboros_model.py t5config_large.json ./ COPY --from=frontend --chown=user /build/dist ./dist USER user ENV HF_HOME=/home/user/.cache/huggingface PYTHONUNBUFFERED=1 OUROBOROS_CPU_THREADS=2 EXPOSE 7860 CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1"]