FROM rust:1.86-alpine AS builder
RUN apk add --no-cache musl-dev
WORKDIR /app
# Workspace
COPY Cargo.toml Cargo.lock ./
COPY backend/Cargo.toml ./backend/Cargo.toml
COPY agents/agent-scan-network/Cargo.toml ./agents/agent-scan-network/Cargo.toml
COPY agents/agent-metric/Cargo.toml ./agents/agent-metric/Cargo.toml
# Stubs pour cacher les dépendances
RUN mkdir -p backend/src agents/agent-scan-network/src agents/agent-metric/src \
    && echo 'fn main(){}' > backend/src/main.rs \
    && echo 'fn main(){}' > agents/agent-scan-network/src/main.rs \
    && echo 'fn main(){}' > agents/agent-metric/src/main.rs \
    && cargo build --release -p sentinelmesh-backend
# Sources réelles (les stubs agents restent en place)
COPY backend/src ./backend/src
COPY backend/migrations ./backend/migrations
RUN touch backend/src/main.rs && cargo build --release -p sentinelmesh-backend

FROM alpine:3.21
RUN apk add --no-cache ca-certificates && mkdir -p /data
WORKDIR /app
COPY --from=builder /app/target/release/sentinelmesh-backend .
COPY --from=builder /app/backend/migrations ./migrations
EXPOSE 8080
CMD ["./sentinelmesh-backend"]
