FROM rust:alpine3.18 as builder # update packages RUN apk update RUN apk add build-base pkgconfig libressl-dev # Install rust toolchains RUN rustup toolchain install stable RUN rustup default stable # Build dependencies only. Separate these for caches RUN cargo install cargo-build-deps # Copy application now WORKDIR /app COPY ./ /app RUN cargo build-deps --release # Build the release executable. RUN cargo build --release # Runner stage. FROM alpine RUN apk update \ && apk add --no-cache \ curl \ catatonit \ && rm -rf \ /root/.cache \ /tmp/* ARG UNAME=port_updater ARG UID=1000 ARG GID=1000 # Add user and copy the executable from the build stage. RUN adduser --disabled-password --gecos "" $UNAME -s -G $GID -u $UID COPY --from=builder --chown=$UID:$GID /app/target/release/gluetun-qbit-port-updater /app/gluetun-qbit-port-updater USER $UNAME WORKDIR /app ENTRYPOINT ["/usr/bin/catatonit", "--"] CMD ["/app/gluetun-qbit-port-updater"] LABEL org.opencontainers.image.source="https://git.seanomik.net/SeanOMik/gluetun-qbit-port-updater"