# syntax=docker/dockerfile:1
# Two-stage build for the inert Capacity Planner image.
# Build only; nothing here pushes, publishes, or wires deployment.

FROM golang:1.26.5-alpine AS builder

# Version metadata injected by make dockerbuild/capacity-planner (defaults when built raw).
ARG GIT_VERSION=v0.0.0
ARG GIT_COMMIT=unknown

WORKDIR /src

# Dependencies first: cache-friendly and reproducible.
COPY go.mod go.sum ./
RUN go mod download

COPY . .

RUN CGO_ENABLED=0 go build -trimpath \
    -ldflags "-X github.com/tidbcloud/cluster-service-ng/internal/capacity-planner/pkg/version.gitVersion=${GIT_VERSION} -X github.com/tidbcloud/cluster-service-ng/internal/capacity-planner/pkg/version.gitCommit=${GIT_COMMIT}" \
    -o /capacity-planner ./cmd

# Minimal runtime: same base as dataplane-manager / k8s-version-manager.
# Only the binary is copied; no packages, no chart/config/source.
FROM gcr.io/pingcap-public/pingcap/alpine:3.22.1

COPY --from=builder /capacity-planner /capacity-planner

USER 65532:65532
ENTRYPOINT ["/capacity-planner"]
