# syntax=docker/dockerfile:1

FROM node:22-bookworm-slim AS frontend-builder
WORKDIR /app
RUN corepack enable
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
COPY apps/web/package.json apps/web/
COPY packages/ui/package.json packages/ui/
RUN pnpm install --frozen-lockfile
COPY apps/web apps/web
COPY packages/ui packages/ui
RUN pnpm --filter web build

FROM rust:1.85-bookworm AS backend-builder
WORKDIR /app
RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/*
COPY backend/Cargo.toml backend/Cargo.lock* ./backend/
COPY backend/migrations ./backend/migrations/
COPY backend/src ./backend/src/
COPY --from=frontend-builder /app/apps/web/dist ./static/
WORKDIR /app/backend
ENV STATIC_DIR=/app/static
RUN cargo build --release

FROM debian:bookworm-slim AS runtime
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=backend-builder /app/backend/target/release/cfdm-backend /app/cfdm-backend
COPY --from=frontend-builder /app/apps/web/dist /app/static
COPY VERSION /app/VERSION
ENV STATIC_DIR=/app/static
ENV DATABASE_URL=sqlite:/data/app.db
ENV SERVER_PORT=8080
EXPOSE 8080
VOLUME ["/data"]
CMD ["/app/cfdm-backend"]
