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