# ---------- builder ----------
FROM python:3.12-slim AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
        gcc libpq-dev && \
    rm -rf /var/lib/apt/lists/*

RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

COPY pyproject.toml /src/pyproject.toml
COPY app/ /src/app/
COPY mcp_server/ /src/mcp_server/

WORKDIR /src
RUN pip install --no-cache-dir .

# ---------- production ----------
FROM python:3.12-slim

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

RUN groupadd --system appuser && useradd --system --gid appuser appuser

COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH" \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /app

COPY app/ app/
COPY mcp_server/ mcp_server/
COPY alembic/ alembic/
COPY alembic.ini .
COPY pyproject.toml .
COPY railway-release.sh .
COPY entrypoint.sh .
RUN chmod +x railway-release.sh entrypoint.sh

USER appuser

ENV PORT=8000
EXPOSE $PORT

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD curl -f http://localhost:${PORT}/health || exit 1

CMD ["./entrypoint.sh"]
