FROM golang:1.26-alpine AS builder

ARG GIT_COMMIT=dev

WORKDIR /app

RUN apk add --no-cache git gcc musl-dev bash

COPY go.mod go.sum ./
RUN go mod download

COPY . .

ENV CGO_ENABLED=1
ENV GIN_MODE=release

RUN go build -ldflags "-X ResendIt/internal/buildinfo.Commit=${GIT_COMMIT}" -o app ./cmd/server

FROM alpine:latest

WORKDIR /app

RUN apk add --no-cache ca-certificates tzdata

COPY --from=builder /app/app .
COPY --from=builder /app/templates ./templates
COPY --from=builder /app/static ./static

RUN mkdir -p /app/uploads

RUN adduser -D appuser
USER appuser

ENV GIN_MODE=release

EXPOSE 8000

CMD ["./app"]