# Stage 1: Build static Go binary
FROM golang:1.27-alpine AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/polar ./cmd/polar

# Stage 2: Minimal runtime image with git
FROM alpine:3.20
RUN apk add --no-cache git ca-certificates tzdata && \
    adduser -D -u 10001 polar
WORKDIR /app
COPY --from=builder /out/polar /app/polar
RUN mkdir -p /app/data && chown -R polar:polar /app

USER polar
EXPOSE 3000
VOLUME ["/app/data"]

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD wget -qO- http://127.0.0.1:3000/healthz || exit 1

ENTRYPOINT ["/app/polar"]
