Skip to content

Create a builder image #712

@rez1dent3

Description

@rez1dent3

Currently, building binaries and plugins outside of a controlled environment may lead to runtime incompatibilities and non-reproducible builds. Introducing a dedicated builder image would provide a stable and consistent toolchain for compilation and linking.

A builder image would ensure:

  • Reproducible builds with pinned compiler, Go version, and system libraries
  • Correct linking of binaries and plugins
  • Fewer environment-specific issues in local builds and CI/CD
  • Cleaner production images via multi-stage Docker builds

Common issues without a builder image:

  • Plugin / runtime mismatch

    plugin was built with a different version of package runtime
    
  • Go toolchain mismatch

    panic: plugin.Open: plugin was built with a different version of package sync
    
  • libc incompatibility (glibc vs musl)

    /lib64/libc.so.6: version `GLIBC_2.34' not found
    
  • Invalid or incompatible binary format

    invalid ELF header
    
  • Missing shared libraries at runtime

    error while loading shared libraries: libstdc++.so.6: cannot open shared object file
    
  • CGO symbol resolution errors

    undefined symbol: sqlite3_open_v2
    

Proposed solution:
Provide an official builder image that:

  • Pins Go and system dependency versions
  • Is used for compiling binaries and plugins
  • Is compatible with the recommended runtime image
  • Can be easily integrated into CI/CD and multi-stage Dockerfiles

This would significantly improve build reliability and developer experience.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions