nxtgauge-backend-rust/Dockerfile.template

38 lines
882 B
Text
Raw Permalink Normal View History

# Build stage
FROM rust:alpine AS builder
WORKDIR /usr/src/app
# Install build dependencies and musl target
RUN apk add --no-cache musl-dev pkgconfig openssl-dev && \
rustup target add x86_64-unknown-linux-musl
# Copy manifests
COPY Cargo.toml Cargo.lock ./
COPY crates ./crates
COPY apps ./apps
# Build static binary with musl target
ENV RUSTFLAGS='-C target-feature=+crt-static'
RUN cargo build --release --bin ${BIN_NAME} --target x86_64-unknown-linux-musl
# Runtime stage - minimal Alpine
FROM alpine:latest AS runtime
# Install CA certificates only
RUN apk add --no-cache ca-certificates
# Create app user
RUN adduser -D -u 1000 appuser
WORKDIR /app
# Copy static binary from builder
COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/${BIN_NAME} ./${BIN_NAME}
# Switch to non-root user
USER appuser
# Run the binary
CMD ["./${BIN_NAME}"]