Files
2026-10-28 09:28:51 +01:00

35 lines
1.0 KiB
Docker

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
ENV RUSTFLAGS="-C target-feature=-crt-static"
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"]