FROM node:22-bookworm-slim AS web-build
WORKDIR /src
COPY package.json package-lock.json ./
RUN npm ci
COPY scripts/build-web.mjs ./scripts/build-web.mjs
COPY web ./web
RUN npm run build:web

FROM golang:1.25-bookworm AS build
WORKDIR /src
COPY go.mod go.sum ./
COPY cmd ./cmd
COPY internal ./internal
COPY --from=web-build /src/web ./web
RUN CGO_ENABLED=0 go test ./... && \
    CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/relay-core ./cmd/relay-core && \
    CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/relay-device ./cmd/relay-device

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates poppler-utils tzdata && rm -rf /var/lib/apt/lists/*
RUN useradd --system --uid 10001 --create-home relay && mkdir -p /data && chown relay:relay /data
COPY --from=build /out/relay-core /usr/local/bin/relay-core
COPY --from=build /out/relay-device /usr/local/bin/relay-device
USER relay
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/relay-core"]
