Dockerfile 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. # Multi-stage build for broad-announce services.
  2. # Stage 1: build the four Go service binaries.
  3. # Stage 2: tiny alpine with just the binaries + ca-certs.
  4. FROM golang:1.24-alpine AS build
  5. WORKDIR /src
  6. # Cache deps
  7. COPY go.mod go.sum ./
  8. COPY loadgen/go.mod loadgen/go.sum ./loadgen/ 2>/dev/null || true
  9. RUN go mod download
  10. # Build
  11. COPY . .
  12. RUN --mount=type=cache,target=/root/.cache/go-build \
  13. CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
  14. -o /out/ingestd ./cmd/ingestd && \
  15. CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
  16. -o /out/routerd ./cmd/routerd && \
  17. CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
  18. -o /out/deliverd ./cmd/deliverd && \
  19. CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
  20. -o /out/admind ./cmd/admind && \
  21. cd loadgen && \
  22. CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
  23. -o /out/loadgen-http ./cmd/http
  24. FROM alpine:3.20
  25. RUN apk add --no-cache ca-certificates
  26. COPY --from=build /out/ /app/
  27. # Default: print which binary to invoke; compose overrides command.
  28. CMD ["/app/ingestd"]