Files
2026-09-19 02:45:52 +00:00

34 lines
1.0 KiB
Docker

# 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"]