# syntax=docker/dockerfile:1

FROM node:22-bookworm AS frontend
WORKDIR /app/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build

FROM rust:1-bookworm AS backend
WORKDIR /app/backend
COPY backend/Cargo.toml backend/Cargo.lock ./
RUN mkdir src && echo 'fn main(){}' > src/main.rs && cargo build --release && rm -rf src
COPY backend/src ./src
RUN touch src/main.rs && cargo build --release

FROM debian:bookworm-slim
RUN apt-get update \
  && apt-get install -y --no-install-recommends ca-certificates vnstat \
  && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=backend /app/backend/target/release/meterbox /usr/local/bin/meterbox
COPY --from=frontend /app/frontend/dist /app/frontend/dist
RUN mkdir -p /app/data
ENV METERBOX_LISTEN=127.0.0.1:8787 \
    METERBOX_DB=/app/data/meterbox.db \
    METERBOX_STATIC=/app/frontend/dist \
    METERBOX_INTERVAL_SECS=30 \
    METERBOX_RETENTION_DAYS=90 \
    METERBOX_BWFLOW_SOCK=/run/bwflow/bwflow.sock
EXPOSE 8787
VOLUME ["/app/data"]
CMD ["meterbox"]
