47 lines
1.4 KiB
Plaintext
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"]
|