FROM rust:1.92-bookworm AS builder WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ cmake \ nasm \ pkg-config \ && rm -rf /var/lib/apt/lists/* COPY Cargo.toml Cargo.lock ./ COPY src ./src COPY migrations ./migrations COPY templates ./templates RUN cargo build --release FROM node:20-alpine AS frontend-builder WORKDIR /app/frontend COPY frontend/package*.json ./ RUN npm ci COPY frontend ./ RUN npm run build FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /app/target/release/imageforge ./imageforge COPY --from=frontend-builder /app/frontend/dist ./static COPY migrations ./migrations RUN mkdir -p uploads ENV HOST=0.0.0.0 ENV PORT=8080 EXPOSE 8080 CMD ["./imageforge"]