# Build stage
FROM ci.nxtgauge.com/admin/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 ci.nxtgauge.com/admin/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}"]
