###### Builder Image
FROM rust as builder
WORKDIR /app
COPY . .
# scratch does not have the mkdir binary, so we create a folder here
RUN mkdir -p empty_upload

ARG ARCH
RUN __ARCH="$(dpkg --print-architecture)"; \
    [ -z  $ARCH ] || __ARCH=$ARCH; \
    case "$__ARCH" in \
        arm64) \
            export __TARGET='aarch64-unknown-linux-gnu'; \
            apt update && apt upgrade -y; \
            apt install -y gcc-aarch64-linux-gnu; \
            rustup target add aarch64-unknown-linux-gnu; \
            ;; \
        amd64) export __TARGET='x86_64-unknown-linux-gnu' ;; \
    esac; \
    cargo install --target $__TARGET --path .;

RUN cargo clean


###### Runner Image
FROM scratch as runner
COPY --from=builder /app/empty_upload upload
COPY ./contrib/cli/client upload/client
COPY ./templates templates
COPY ./static static
COPY ./themes themes
COPY --from=builder /usr/local/cargo/bin/bin .

ENV ROCKET_ADDRESS=0.0.0.0
ENV ROCKET_PORT=6162

EXPOSE 6162
CMD ["./bin"]
