# Build multi-arch : docker buildx build --platform linux/amd64,linux/arm64 . # Note : agent-metric nécessite accès /sys et /proc — lancer avec --privileged FROM --platform=$BUILDPLATFORM rust:1.82-alpine AS builder ARG TARGETPLATFORM RUN apk add --no-cache musl-dev RUN case "$TARGETPLATFORM" in \ "linux/amd64") echo "x86_64-unknown-linux-musl" > /rust_target ;; \ "linux/arm64") echo "aarch64-unknown-linux-musl" > /rust_target ;; \ "linux/arm/v7") echo "armv7-unknown-linux-musleabihf" > /rust_target ;; \ *) echo "x86_64-unknown-linux-musl" > /rust_target ;; \ esac RUN rustup target add "$(cat /rust_target)" WORKDIR /build COPY Cargo.toml ./ RUN mkdir src && echo 'fn main(){}' > src/main.rs RUN cargo build --release --target "$(cat /rust_target)" 2>/dev/null || true RUN rm -rf src COPY src ./src RUN cargo build --release --target "$(cat /rust_target)" RUN cp "target/$(cat /rust_target)/release/agent-metric" /agent FROM alpine:3.21 RUN apk add --no-cache ca-certificates smartmontools WORKDIR /app COPY --from=builder /agent ./agent-metric EXPOSE 9101 VOLUME ["/app/config.yaml"] # Accès /sys /proc /dev nécessaire pour les métriques — docker run --privileged ENTRYPOINT ["./agent-metric", "/app/config.yaml"]