FROM oven/bun:debian AS frontend-dependency-installer WORKDIR /usr/src/warren COPY frontend/package.json frontend/bun.lock ./ RUN bun install --frozen-lockfile --ignore-scripts FROM node:bookworm AS frontend-builder WORKDIR /usr/src/warren COPY --from=frontend-dependency-installer /usr/src/warren/ . COPY frontend/ ./ RUN npm run generate FROM rust:alpine AS backend-builder WORKDIR /usr/src/warren COPY backend/Cargo.toml backend/Cargo.lock ./ RUN mkdir -p src/bin/backend && mkdir src/lib && echo "fn main() {}" > src/bin/backend/main.rs && echo "" > src/lib/lib.rs RUN apk add --no-cache pkgconfig openssl openssl-dev libc-dev openssl-libs-static RUN cargo build --release COPY backend/ . RUN touch src/bin/backend/main.rs && touch src/lib/lib.rs RUN cargo build --release FROM alpine:3 WORKDIR /var/lib/warren COPY --from=backend-builder /usr/src/warren/target/release/warren_backend /usr/bin/warren COPY --from=frontend-builder /usr/src/warren/dist ./frontend ENV STATIC_FRONTEND_DIRECTORY "./frontend" ENTRYPOINT ["warren"]