Skip to content
This repository was archived by the owner on Feb 6, 2026. It is now read-only.

feat: build service container images from distroless base - #8310

Closed
fnichol wants to merge 1 commit into
mainfrom
fnichol/distroless-images
Closed

fnichol wants to merge 1 commit into
mainfrom
fnichol/distroless-images

Conversation

@fnichol

@fnichol fnichol commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

This change re-introduces container image builds for our core deployed services, namely:

  • edda
  • forklift
  • luminork
  • pinga
  • rebaser
  • sdf
  • veritech

This solution takes a much different approach to how we've built these images in the past.

Prior to this change, we've compiled the target binary from scratch in a build container, using the same Nix and Buck2 infrastructure. This proved to be very difficult to initially implement and was hard to maintain it. Furthermore, the images weren't being directly relied upon by the team leading many images to be built in the si/merge-queue pipeline that took at least as long as building our primary artifacts (and often longer).

The approach taken here uses base images from Google's Distroless project which can be thought more of a way to statically build in the runtime requirements for a service. In our case, this image provides nothing more than the basic libc/libgcc/ssl/certificate environmental requrements for a dynamically linked Rust binary to work as expected. The container images use Debian 13 as their upstream basis for Glibc, GCC libs, etc. and so are just as compatible as any debian-derived base.

So, these container images will use/consume an already-built binary and overlay it onto the image. This makes the image build phase very fast and similar to our "binary artifact" artifacts (which essentially tar up the binary).

References

@github-actions github-actions Bot added A-sdf Area: Primary backend API service [Rust] A-veritech Area: Task execution backend service [Rust] A-pinga A-rebaser A-forklift A-edda A-luminork labels Jan 20, 2026
@github-actions

github-actions Bot commented Jan 20, 2026 •

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or OpenSSF Scorecard issues found.

Scanned Files

None

@fnichol
fnichol force-pushed the fnichol/distroless-images branch from 1520c15 to c8ca520 Compare January 20, 2026 23:30
This change re-introduces container image builds for our core deployed
services, namely:

- edda
- forklift
- luminork
- pinga
- rebaser
- sdf
- veritech

This solution takes a much different approach to how we've built these
images in the past.

Prior to this change, we've compiled the target binary from scratch in a
build container, using the same Nix and Buck2 infrastructure. This
proved to be very difficult to initially implement and was hard to
maintain it. Furthermore, the images weren't being directly relied upon
by the team leading many images to be built in the `si/merge-queue`
pipeline that took at least as long as building our primary artifacts
(and often longer).

The approach taken here uses base images from Google's [Distroless]
project which can be thought more of a way to statically build in the
*runtime* requirements for a service. In our case, this image provides
nothing more than the basic libc/libgcc/ssl/certificate environmental
requrements for a dynamically linked Rust binary to work as expected.
The container images use Debian 13 as their upstream basis for Glibc,
GCC libs, etc. and so are just as compatible as any debian-derived base.

So, these container images will use/consume an already-built binary and
overlay it onto the image. This makes the image build phase very fast
and similar to our "binary artifact" artifacts (which essentially tar up
the binary).

[Distroless]: https://github.com/GoogleContainerTools/distroless

References
----------
- https://github.com/grafana/tempo/blob/main/cmd/tempo/Dockerfile
- https://labs.iximiuz.com/tutorials/gcr-distroless-container-images
- https://github.com/GoogleContainerTools/distroless
- https://youtu.be/lviLZFciDv4?si=o-NWKb5dwgg1nsI-

Signed-off-by: Fletcher Nichol <[email protected]>
@fnichol
fnichol force-pushed the fnichol/distroless-images branch from c8ca520 to d890379 Compare January 20, 2026 23:36
@fnichol fnichol changed the title feat: build service conatiner images from distroless base feat: build service container images from distroless base Jan 20, 2026
@nickgerace

Copy link
Copy Markdown
Contributor

/try

@github-actions

github-actions Bot commented Jan 21, 2026 •

Copy link
Copy Markdown

Okay, starting a try! I'll update this comment once it's running...
🚀 Try running here! 🚀

@fnichol

fnichol commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

/try

@fnichol

fnichol commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

Okay, starting a try! I'll update this comment once it's running... 🚀 Try running here! 🚀

I think that failure was a Docker Hub login flake, re-running the try to confirm

@github-actions

github-actions Bot commented Jan 21, 2026 •

Copy link
Copy Markdown

Okay, starting a try! I'll update this comment once it's running...
🚀 Try running here! 🚀

@fnichol

fnichol commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

Figured it out, we're missing a Docker Hub repository for Luminork. We'll get that created and we should be good to go.

@stack72 stack72 closed this Jan 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

A-edda A-forklift A-luminork A-pinga A-rebaser A-sdf Area: Primary backend API service [Rust] A-veritech Area: Task execution backend service [Rust]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants