33800 Docs

← Retour
# Build stage FROM rust:1.83-alpine AS builder WORKDIR /app # Installer musl-dev pour la compilation statique RUN apk add --no-cache musl-dev # Copier les fichiers Cargo COPY Cargo.toml Cargo.lock* ./ # Créer un dummy src pour compiler les dépendances RUN mkdir src && echo "fn main() {}" > src/main.rs RUN cargo build --release RUN rm -rf src # Copier le vrai code source COPY src ./src # Rebuild avec le vrai code (les dépendances sont cachées) RUN touch src/main.rs && cargo build --release # Runtime stage FROM alpine:3.20 WORKDIR /app # Installer les certificats CA pour HTTPS RUN apk add --no-cache ca-certificates curl # Copier le binaire compilé COPY --from=builder /app/target/release/app /app/app ENV PORT=3000 EXPOSE ${PORT} # Healthcheck HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost:${PORT}/health || exit 1 CMD ["/app/app"]