# syntax=docker/dockerfile:1.7

# --- builder stage ---
FROM python:3.11-slim AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /build

# Install package (with [server] + [queue] extras) into a venv we can copy.
ARG MB_VERSION=0.2.0
RUN python -m venv /opt/venv
ENV PATH=/opt/venv/bin:$PATH
RUN pip install --no-cache-dir --upgrade pip \
    && pip install --no-cache-dir "lattice-meetbot-admin[server,queue]==${MB_VERSION}"

# --- runtime stage ---
FROM python:3.11-slim AS runtime

# Runtime system deps: ffmpeg (for /clips), redis-tools (CLI for debugging),
# curl (healthcheck).
RUN apt-get update && apt-get install -y --no-install-recommends \
        ffmpeg redis-tools curl \
    && rm -rf /var/lib/apt/lists/*

# Non-root user
RUN useradd --create-home --uid 10001 mb
USER mb
WORKDIR /home/mb

# Copy the venv from builder
COPY --from=builder --chown=mb:mb /opt/venv /opt/venv
ENV PATH=/opt/venv/bin:$PATH

# Default config (overridable via env)
ENV MEETBOT_ADMIN_DB_URL=sqlite:////home/mb/.lattice/meetbot-admin/meetbot_admin.db
ENV MEETBOT_ADMIN_CLIP_STORAGE_DIR=/home/mb/.lattice/meetbot-admin/clips
ENV MEETBOT_ADMIN_ENABLE_WEBHOOKS=true
# MEETBOT_ADMIN_REDIS_URL must be set at runtime when enable_webhooks=true

EXPOSE 5557

HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
  CMD curl -fsS http://localhost:5557/health || exit 1

# Default command runs the FastAPI dev-server. To run the worker instead, pass:
#   docker run ... <image> lattice-meetbot-admin worker --redis-url redis://redis:6379/0
CMD ["lattice-meetbot-admin", "dev-server", "--host", "0.0.0.0", "--port", "5557"]
