FROM rust:1.99.1-alpine3.24 AS builder RUN apk add --no-cache \ build-base \ pkgconf \ openssl-dev \ zlib-dev \ cmake \ clang \ perl WORKDIR /build COPY Cargo.toml Cargo.lock rust-toolchain.toml build.rs ./ COPY src ./src COPY web ./web COPY vendor ./vendor COPY docs ./docs RUN cargo build --release --locked FROM alpine:3.24 AS runtime RUN apk add --no-cache ca-certificates libssl3 libcrypto3 zlib libgcc \ && addgroup -S -g 10001 app \ && adduser -S -D -H -u 10001 -G app -h /data -s /sbin/nologin app \ && install -d -m 0700 -o app -g app /data COPY --from=builder --chmod=0755 /build/target/release/mikrotik-backup /usr/local/bin/mikrotik-backup ENV DATA_DIR=/data LISTEN_ADDR=0.0.0.0:5581 APP_ENV=production USER 10001:10001 WORKDIR /data VOLUME ["/data"] EXPOSE 5581 HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ CMD ["/usr/local/bin/mikrotik-backup", "healthcheck"] ENTRYPOINT ["/usr/local/bin/mikrotik-backup"] CMD ["serve"]