49 lines
1.1 KiB
Docker
49 lines
1.1 KiB
Docker
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" |