Cybersecurity-Projects/PROJECTS/intermediate/binary-analysis-tool/infra/docker/rust.prod

47 lines
1.4 KiB
Plaintext

# ©AngelaMos | 2026
# rust.prod
# Production multi-stage Dockerfile for Rust backend
# syntax=docker/dockerfile:1
# ============================================================================
# BUILD STAGE
# ============================================================================
FROM rust:1.88-slim AS builder
RUN apt-get update && \
apt-get install -y --no-install-recommends \
pkg-config libssl-dev libpq-dev && \
rm -rf /var/lib/apt/lists/*
WORKDIR /build
COPY backend/Cargo.toml backend/Cargo.lock* ./
COPY backend/crates ./crates
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/build/target \
cargo build --release && \
cp target/release/axumortem /usr/local/bin/axumortem
# ============================================================================
# RUNTIME STAGE
# ============================================================================
FROM debian:bookworm-slim AS runtime
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libpq5 ca-certificates && \
rm -rf /var/lib/apt/lists/* && \
useradd --create-home --shell /bin/false axumortem
COPY --from=builder /usr/local/bin/axumortem /usr/local/bin/axumortem
USER axumortem
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
CMD ["/usr/local/bin/axumortem", "--help"] || exit 1
ENTRYPOINT ["/usr/local/bin/axumortem"]