35 lines
1.0 KiB
Docker
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"]
|