# Build Stage
FROM rust:alpine as builder

WORKDIR /app
RUN apk add --no-cache musl-dev

# Create dummy project to cache dependencies
RUN mkdir src && echo "fn main() {}" > src/main.rs
COPY Cargo.toml .
RUN cargo build --release

# Copy actual source code
COPY src ./src
# Touch main.rs to force rebuild
RUN touch src/main.rs
RUN cargo build --release

# Runtime Stage
FROM alpine:latest
WORKDIR /app
RUN apk add --no-cache libgcc

COPY --from=builder /app/target/release/dashboard-backend .

EXPOSE 8000

CMD ["./dashboard-backend"]
