# Build stage
FROM golang:1.23-alpine AS builder

WORKDIR /build

# Copy go module files
COPY go.mod ./
RUN test -f go.sum && cp go.sum go.sum.bak || true

# Copy entire source tree (internal/, cmd/)
COPY . .

# Ensure go.sum is up to date
RUN go mod tidy

# Build from root (module is defined there)
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o server ./cmd/server

# Runtime image
FROM alpine:latest

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

WORKDIR /root/

# Copy binary from builder
COPY --from=builder /build/server .

EXPOSE 8080

CMD ["./server"]
