FROM node:24-alpine AS admin-web-builder

WORKDIR /admin-web
COPY admin-web/package.json admin-web/package-lock.json ./
RUN npm ci
COPY admin-web/ ./
RUN npm run build


FROM python:3.12-slim-bullseye AS python-base

WORKDIR /wbb

ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV UV_NO_DEV=1

RUN apt-get update -y && apt-get install -y --no-install-recommends \
    build-essential \
    ca-certificates \
    curl \
    gcc \
    git \
    iputils-ping \
    && rm -rf /var/lib/apt/lists/*

ADD https://astral.sh/uv/install.sh /uv-installer.sh
RUN sh /uv-installer.sh && rm /uv-installer.sh
ENV PATH="/root/.local/bin/:$PATH"

COPY .python-version pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev

COPY . .
COPY --from=admin-web-builder /admin-web/dist /wbb/admin-web/dist

EXPOSE 8088

ENTRYPOINT ["uv", "run", "--no-sync", "python", "launcher.py"]
