FROM node:24.21.0-alpine@sha256:ebfe2f90462722a7a4de65e91990e97fe0d401c70e0e762c5b53302f905ec1c1 AS web WORKDIR /web COPY web/package.json web/package-lock.json ./ RUN npm ci --no-audit --no-fund COPY web/ ./ RUN npm run check && npm run build FROM golang:1.27.2-alpine@sha256:f92b6ef800e499660581efdabdf25d9d817a9d124eaf900924f0504e7e27e12d AS go-build WORKDIR /src COPY go.mod ./ COPY cmd/ ./cmd/ COPY internal/ ./internal/ RUN CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' -o /review ./cmd/review FROM scratch COPY --from=go-build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --from=go-build /review /review COPY --from=web /web/build /web USER 10001:10001 EXPOSE 8080 ENTRYPOINT ["/review"] CMD ["serve", "--data", "/data", "--web", "/web"]