# we need buster bcs alpine does not have glibc
FROM rust:1.77-slim-buster AS backend-builder

WORKDIR /src
COPY ./backend/ .

RUN apt-get update \
 && apt-get install -y libsqlite3-dev \
 && rm -rf /var/lib/apt/lists/*

RUN cargo install --path . --locked

FROM node:20-buster-slim AS frontend-builder

WORKDIR /src
COPY ./frontend/ .

RUN npm install && npm run build

FROM debian:buster-slim AS runner

WORKDIR /srv

RUN apt-get update \
 && apt-get install -y sqlite3 \
 && rm -rf /var/lib/apt/lists/*

COPY schema.sqlite3 /db.sqlite3
ENV DB_FILE=/db.sqlite3

COPY --from=backend-builder /usr/local/cargo/bin/backend /usr/bin
COPY --from=frontend-builder /src/dist .

CMD ["/usr/bin/backend"]
