Skip to content

VOIP-1277-All-services-static-build-distroless - #1152

Merged
pchero merged 2 commits into
mainfrom
VOIP-1277-All-services-static-build-distroless
Jul 31, 2026
Merged

VOIP-1277-All-services-static-build-distroless#1152
pchero merged 2 commits into
mainfrom
VOIP-1277-All-services-static-build-distroless

Conversation

@pchero

@pchero pchero commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Fleet rollout of VOIP-1277: convert all Go services to CGO_ENABLED=0 static builds with gcr.io/distroless/static-debian12 runtime images. Extends the bin-api-manager pilot (PR #1151, superseded by this PR) to 34 Dockerfiles. Production containers no longer contain a shell, package manager, or OS userland; CA certificates become uniformly bundled. Excluded with documented rationale: bin-pipecat-manager (mandatory cgo/libsoxr + Python runtime), bin-dbscheme-manager (non-Go mysql seed image), voip-rtpengine-proxy (needs tcpdump executable). Verified pre-merge: all 34 services build with CGO_ENABLED=0, all 34 docker images built locally with zero failures, 6 smoke samples (standard, TLS+/tmp, migrations-at-startup, CronJob binary, CMD, ENTRYPOINT) exec correctly in distroless, voip-kamailio-proxy full verification workflow green. Deployment is one-service-at-a-time via existing CircleCI approval gates per the design doc's rollout procedure. Jira: VOIP-1277.

  • bin-api-manager: CGO_ENABLED=0 + distroless/static runtime, docsdev COPY narrowed to build/html, build stage unified to golang:1.25-alpine (1.08GB to 139MB)
  • bin-agent-manager, bin-ai-manager, bin-billing-manager, bin-call-manager, bin-campaign-manager, bin-conference-manager, bin-contact-manager, bin-conversation-manager, bin-customer-manager, bin-direct-manager, bin-email-manager, bin-flow-manager, bin-hook-manager, bin-message-manager, bin-number-manager, bin-outdial-manager, bin-queue-manager, bin-registrar-manager, bin-route-manager, bin-sentinel-manager, bin-storage-manager, bin-tag-manager, bin-talk-manager, bin-transcribe-manager, bin-transfer-manager, bin-trigger-sender, bin-tts-manager, bin-webchat-manager, bin-webhook-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
  • bin-rag-manager: Convert to distroless/static runtime, migrations COPY preserved (startup migrations)
  • bin-timeline-manager: Convert to distroless/static runtime, drop apk ca-certificates (bundled in distroless), CMD and migrations COPY preserved
  • voip-asterisk-proxy: Convert to CGO_ENABLED=0 static build + distroless/static runtime
  • voip-kamailio-proxy: Convert to distroless/static runtime, ENTRYPOINT preserved; fix stale x/sys go.mod pin that broke go mod vendor on main
  • monorepo: Add fleet design document docs/plans/2026-07-31-fleet-static-build-distroless-design.md and pilot design document

pchero added 2 commits July 31, 2026 12:21
- bin-api-manager: Build with CGO_ENABLED=0 (static binary, enabled by VOIP-1276 cgo removal)
- bin-api-manager: Switch runtime image from golang:1.25-bookworm to gcr.io/distroless/static-debian12 (1.08GB to 139MB)
- bin-api-manager: Narrow docsdev COPY to build/html only (exclude RST sources from runtime image)
- monorepo: Add design document docs/plans/2026-07-31-api-manager-static-build-distroless-design.md
- bin-api-manager: Build with CGO_ENABLED=0, switch runtime to gcr.io/distroless/static-debian12, narrow docsdev COPY to build/html, unify build stage to golang:1.25-alpine
- bin-agent-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-ai-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-billing-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-call-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-campaign-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-conference-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-contact-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-conversation-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-customer-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-direct-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-email-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-flow-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-hook-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-message-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-number-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-outdial-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-queue-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-rag-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime (migrations COPY preserved)
- bin-registrar-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-route-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-sentinel-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-storage-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-tag-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-talk-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-timeline-manager: Convert to distroless/static runtime, drop apk ca-certificates (bundled in distroless), keep CMD and migrations COPY
- bin-transcribe-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-transfer-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-trigger-sender: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-tts-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-webchat-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- bin-webhook-manager: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- voip-asterisk-proxy: Convert to CGO_ENABLED=0 static build + distroless/static runtime
- voip-kamailio-proxy: Convert to CGO_ENABLED=0 static build + distroless/static runtime (ENTRYPOINT preserved), fix stale go.mod x/sys pin blocking go mod vendor
- monorepo: Add fleet design document docs/plans/2026-07-31-fleet-static-build-distroless-design.md; pilot design doc for api-manager (excluded: bin-pipecat-manager cgo/python, bin-dbscheme-manager non-Go, voip-rtpengine-proxy tcpdump)
@pchero
pchero merged commit ac066fd into main Jul 31, 2026
2 of 3 checks passed
@pchero
pchero deleted the VOIP-1277-All-services-static-build-distroless branch July 31, 2026 07:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant