vetis 0.1.4-beta.5

Very Tiny Server
Documentation
FROM rust:alpine AS build

RUN apk update && \
    apk upgrade --no-cache && \
    apk add --no-cache lld mold musl musl-dev libc-dev cmake clang clang-dev llvm llvm-dev openssl file \
        libressl-dev git make build-base bash curl wget zip gnupg coreutils gcc g++ zstd pkgconfig \
        binutils ca-certificates upx ruby-full

WORKDIR /docker
COPY . ./
RUN cd /docker/vetis && \
    RUSTFLAGS="-C target-feature=-crt-static" cargo build --release --features="tokio-rt http1 tokio-rust-tls ruby" \
    --no-default-features --target=x86_64-unknown-linux-musl


FROM alpine:latest AS files

RUN apk update && \
    apk upgrade --no-cache && \
    apk add --no-cache ca-certificates mailcap tzdata

RUN update-ca-certificates

ENV USER=vetis
ENV UID=10001
RUN adduser \
    --disabled-password \
    --gecos "" \
    --home "/var/www/vetis" \
    --shell "/sbin/nologin" \
    --no-create-home \
    --uid "${UID}" \
    "${USER}"


FROM scratch

COPY --from=files --chmod=444 \
    /etc/passwd \
    /etc/group \
    /etc/nsswitch.conf \
    /etc/mime.types \
    /etc/

COPY --from=files --chmod=444 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=files --chmod=444 /usr/share/zoneinfo /usr/share/zoneinfo

COPY --from=build /usr/lib /usr/lib
COPY --from=build /vetis/target/release/vetis /bin/vetis

USER vetis:vetis

WORKDIR /app

ENTRYPOINT ["/bin/vetis"]