bee / Dockerfile
Bee Deploy
HF Space backend deploy [de0cba5]
5e21013
FROM python:3.12-slim AS base
# System deps for FAISS, sentencepiece, and torch
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Install Python deps first (layer cache)
COPY requirements.docker.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code. Static chat UI lives at bee/static/ (since
# 770a763) and is served by bee/server.py via FastAPI's StaticFiles
# mount at URL /static β€” the mount resolves relative to __file__, so
# the on-disk path under the container is /app/bee/static/.
COPY bee/ ./bee/
COPY scripts/ ./scripts/
COPY .env.example ./.env.example
# Copy ML artifacts under data/ (mirrors host layout β€” paths in bee/ point at ./data/*)
COPY data/datasets/ ./data/datasets/
COPY data/rag_index/ ./data/rag_index/
COPY data/lora_checkpoints/ ./data/lora_checkpoints/
# Create dirs for runtime data
RUN mkdir -p /app/data/datasets /app/data/rag_index /app/data/lora_checkpoints
# Healthcheck reads whatever port the app actually bound to.
# HF Spaces docker runtime sets PORT=7860 (verified against run logs of
# commit 5a22d328 β€” uvicorn bound 7860, our cardData said app_port: 8000,
# proxy probed :8000 forever, Space died at HF's 30-min watchdog).
# Fix is two-pronged: cardData now says app_port: 7860 (matches reality),
# and bee.server.main() reads PORT as a fallback to BEE_PORT.
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD python3 -c "import os, urllib.request; \
p = os.environ.get('BEE_PORT') or os.environ.get('PORT') or '7860'; \
urllib.request.urlopen(f'http://localhost:{p}/health')" || exit 1
# Both ports declared so the image runs cleanly under HF Spaces (7860,
# the default the runtime forces) AND under generic docker run (8000,
# our local default). bee.server picks via BEE_PORT > PORT > 7860.
EXPOSE 7860 8000
ENV BEE_HOST=0.0.0.0 \
BEE_DEVICE=cpu \
PYTHONUNBUFFERED=1
CMD ["python3", "-m", "bee.server"]