FROM rust:1.97.1-alpine3.23 AS build
RUN apk add --no-cache musl-dev build-base
WORKDIR /source
COPY Cargo.toml Cargo.lock ./
COPY vendor ./vendor
COPY src ./src
COPY web ./web
RUN cargo build --release --locked
COPY . .
RUN tar -czf /source.tar.gz --exclude='./target' .

FROM alpine:3.23 AS directories
RUN mkdir -p /data && chown 65532:65532 /data

FROM scratch
COPY --from=directories --chown=65532:65532 /data /data
COPY --from=build /source/target/release/url-shortner /app/url-shortner
COPY --from=build /source.tar.gz /app/source.tar.gz
USER 65532:65532
ENTRYPOINT ["/app/url-shortner"]
