FROM golang:alpine AS server-builder
WORKDIR /server
COPY ./server .
RUN go mod download && go mod verify
RUN go build -o {{PROJECT_NAME}} main.go

FROM oven/bun:alpine AS app-builder
WORKDIR /app
COPY ./app .
RUN bun install
RUN bun run build

FROM alpine:latest AS runner
WORKDIR /{{PROJECT_NAME}}
COPY --from=app-builder /app/dist ./dist
COPY --from=server-builder /server/{{PROJECT_NAME}} .
RUN apk add --no-cache ca-certificates && update-ca-certificates

CMD ./{{PROJECT_NAME}} superuser upsert ${SU_EMAIL} ${SU_PASSWORD} && ./{{PROJECT_NAME}} serve --http=0.0.0.0:8090
