ARG GO_VERSION=1.18.1
ARG NODE_VERSION=16.15.0
ARG ALPINE_VERSION=3.15.4

# build frontend
FROM node:${NODE_VERSION}-alpine AS build-node
WORKDIR /app
COPY nextjs/package.json ./
RUN npm install
COPY nextjs/ .
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run export

# build backend
FROM golang:${GO_VERSION} AS build-go
WORKDIR /app
COPY go.mod go.sum *.go ./
COPY --from=build-node /app/dist ./nextjs/dist
ENV GOPROXY=direct
RUN CGO_ENABLED=0 GOOS=linux go build -v -o app .

FROM --platform=linux/amd64 alpine:${ALPINE_VERSION}
WORKDIR /app
COPY --from=build-go /app/app .
ENTRYPOINT ["./app"]