# Restore from 4bac0e2 + patch frontend + backend models FROM node:20-alpine AS frontend-builder RUN apk add --no-cache git python3 RUN git clone --depth 1 https://huggingface.co/spaces/smolagents/ml-intern /source # Patch frontend: add Gemini + Qwen3 models to dropdown COPY patch_frontend.py /tmp/patch_frontend.py RUN python3 /tmp/patch_frontend.py WORKDIR /source/frontend RUN npm install && npm run build # Stage 2: Production FROM python:3.12-slim COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ RUN useradd -m -u 1000 user WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates && rm -rf /var/lib/apt/lists/* RUN git clone --depth 1 https://huggingface.co/spaces/smolagents/ml-intern /tmp/source && \ cp /tmp/source/pyproject.toml /tmp/source/uv.lock ./ && \ cp -r /tmp/source/agent ./agent && \ cp -r /tmp/source/backend ./backend && \ cp -r /tmp/source/configs ./configs && \ rm -rf /tmp/source RUN uv sync --no-dev --frozen COPY --from=frontend-builder /source/frontend/dist ./static/ COPY configs/frontend_agent_config.json ./configs/frontend_agent_config.json # Patch backend: accept new model IDs COPY patch_models.py /tmp/patch_models.py RUN python /tmp/patch_models.py RUN mkdir -p /app/session_logs && chown -R user:user /app USER user ENV HOME=/home/user \ PYTHONUNBUFFERED=1 \ PYTHONPATH=/app \ PATH="/app/.venv/bin:$PATH" EXPOSE 7860 WORKDIR /app/backend # python:slim does not include bash by default; start.sh is POSIX-compatible. CMD ["sh", "start.sh"]