FROM node:22-alpine3.20 AS frontend-builder
WORKDIR /build

RUN corepack enable
COPY pastabble-frontend/ .
RUN pnpm i && pnpm build

FROM rust:alpine3.20 AS builder
WORKDIR /build

RUN apk add --no-cache musl-dev
COPY . ./
RUN apk --print-arch
RUN case "$(apk --print-arch)" in \
	x86_64) cargo build --target x86_64-unknown-linux-musl --release; \
               mv ./target/x86_64-unknown-linux-musl /release ;; \
	aarch64) cargo build --target aarch64-unknown-linux-musl --release; \
	       mv ./target/aarch64-unknown-linux-musl /release ;; \
	esac

FROM alpine:3.20
WORKDIR /app

RUN mkdir wwwroot data && \
	adduser -D appuser && \
	chown appuser:appuser data

# /* removes directory structure
COPY --from=builder /release/* /app
COPY ./about.html /app/about.html
COPY --from=frontend-builder /build/dist /app/wwwroot

ENV WWW_DIR /app/wwwroot
USER appuser
EXPOSE 8080
CMD [ "./pastabble" ]