| FROM python:3.11-slim | |
| WORKDIR /app | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| gcc g++ git \ | |
| && rm -rf /var/lib/apt/lists/* | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Pre-bake ESM-2 35M weights — ProtFunc uses esm2_t12_35M_UR50D (480d) | |
| RUN python -c "\ | |
| import esm; \ | |
| model, alphabet = esm.pretrained.esm2_t12_35M_UR50D(); \ | |
| print('ESM-2 35M baked into image')" | |
| # Static / config files | |
| COPY static/ static/ | |
| COPY go-basic.obo . | |
| COPY go_map.json . | |
| COPY go_names.json . | |
| COPY mlb_public_v1.pkl . | |
| COPY taxon_probe.json . | |
| COPY temperature_best.json . | |
| COPY platt_mammal.json . | |
| COPY unified_v1_recalibrated.json . | |
| # Model weights | |
| COPY unified_35M_v1.pth . | |
| COPY unified_35M_v1_thresholds.json . | |
| COPY baseline_res.pth . | |
| # Server | |
| COPY server.py . | |
| EXPOSE 8080 | |
| CMD ["sh", "-c", "uvicorn server:app --host 0.0.0.0 --port ${PORT:-8080}"] | |
| # UI v2 PRISM-style landing 20260509 | |
| # UI v4 credit + stage-canvases 20260509c | |