# syntax=docker/dockerfile:1.7
# Dialectic.Backend.Go — multi-stage build.
# Compiles two binaries:
#   - dialectic-backend  (ENTRYPOINT — long-running HTTP server)
#   - dialectic-cli      (operator subcommands; reach via docker exec)

FROM golang:1.25-bookworm AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
ARG VERSION=dev
RUN CGO_ENABLED=0 GOOS=linux go build \
    -ldflags="-s -w -X main.Version=${VERSION}" \
    -o /out/dialectic-backend . \
 && CGO_ENABLED=0 GOOS=linux go build \
    -ldflags="-s -w" \
    -o /out/dialectic-cli ./cmd/dialectic-cli

FROM gcr.io/distroless/static-debian12:nonroot
WORKDIR /app
COPY --from=build /out/dialectic-backend /app/dialectic-backend
COPY --from=build /out/dialectic-cli /app/dialectic-cli
# Put both on PATH so `docker exec dialectic-backend dialectic-cli ...`
# just works without typing /app/.
ENV PATH="/app:${PATH}"
EXPOSE 8090
USER nonroot:nonroot
ENTRYPOINT ["/app/dialectic-backend"]
