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"]
