# Build application from a rust image
FROM rust:1.82-alpine3.20 AS builder
ARG WORKING_DIR=/app
WORKDIR $WORKING_DIR
RUN apk add pkgconfig openssl-dev libc-dev
COPY . .
RUN CARGO_HOME=$WORKING_DIR/cargo_home cargo clean && CARGO_HOME=$WORKING_DIR/cargo_home cargo build --release
# Second image, target based on debian family
FROM alpine:3.20
ARG WORKING_DIR=/app
COPY --from=builder "$WORKING_DIR/target/release/http-envinfo" "/usr/local/bin/http-envinfo"
RUN apk update \
&& apk upgrade \
&& apk add openssl ca-certificates \
&& apk cache clean \
&& addgroup -g 65535 http-group \
&& adduser --shell /sbin/nologin --disabled-password --no-create-home --uid 65535 --ingroup http-group http-user
USER http-user
ENV ROCKET_PROFILE=release \
ROCKET_LOG_LEVEL="normal" \
ROCKET_ADDRESS="0.0.0.0" \
ROCKET_PORT=8080 \
RUST_LOG=info
ENTRYPOINT ["/usr/local/bin/http-envinfo"]
EXPOSE 8080