Skip to content
/ binpot Public

The Docker based pot of binaries

License

Notifications You must be signed in to change notification settings

kbuley/binpot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Binpot

The statically compiled, cross architecture, Docker based, binaries pot.

Blog post

MIT

Usage

The usage is focused to build other Docker images.

For example:

FROM alpine:3.14
COPY --from=kbuley/binpot:helm /bin /usr/local/bin/helm

🔍 Search for all image tags 💡

  • The Docker image tags for kbuley/binpot follow the following formatting:
    • :name for the latest stable version of the program name
    • :name-v0.0.0 for the semver version of the program name
  • Each Docker image is based on scratch and only contain the binary program at the path /bin.
  • Each Docker image and binary program is built for each of the possible CPU architecture supported by Docker, unless indicated otherwise.
  • Each binary has permissions 500 (read and execute for the user owner)
  • You can change the ownership in the COPY command using --chown=1000 for example, without duplicating the binary in your Docker image layers.
  • Each Docker image has an entrypoint [ "/bin" ] so you can run it as well

Need help? ▶️ Create a discussion

Thinking of copying the binary for your host?

Programs available

Program Lastversion Imagetags Architectures
bit v1.1.2 DockerHub all
buildx v0.12.0 DockerHub all
compose v2.23.3 DockerHub all
dlv v1.21.2 DockerHub all
docker v24.0.7 DockerHub all
gh v2.40.1 DockerHub all
golangci-lint v1.55.2 DockerHub all
gomock v1.6.0 DockerHub all
gomodifytags v1.16.0 DockerHub all
go-outline 9736a4b DockerHub all
gopkgs v2.1.2 DockerHub all
goplay v1.0.0 DockerHub all
gopls v0.14.2 DockerHub all
gotests v1.6.0 DockerHub all
helm v3.13.3 DockerHub all
impl v1.2.0 DockerHub all
kubectl v1.29.0 DockerHub all
kubectx v0.9.5 DockerHub all
kubens v0.9.5 DockerHub all
logo-ls v1.3.7 DockerHub all
mockery v2.38.0 DockerHub all
mockgen v1.6.0 DockerHub all
stern v1.27.0 DockerHub all
supervisord v0.7.3 DockerHub all
lazygit v0.40.2 DockerHub all
chezmoi v2.42.3 DockerHub all
ℹ️allarchitecturesmeans:linux/amd64,linux/arm64

Want more!? ▶️ Create an issue!

How it works

  1. For each program, a Dockerfile describes how to build it. The final binary is placed on a final scratch based Docker image. Example: helm has ./dockerfiles/helm/Dockerfile
  2. For each program, a Github Action workflow is triggered when its Dockerfile or the workflow itself is changed. This workflow takes care of:
    1. Cross build the program for all CPU architectures
    2. Pushing the images containing the program to Docker Hub

Copy the binary on your host

If you want to use the binary directly on your host, you can do it with Docker. This has the advantage that it will automatically get the right binary for your host platform.

In the following we want to install helm on our host.

For example:

export PROGRAM="helm" && \
  docker pull "kbuley/binpot:$PROGRAM" && \
  containerid="$(docker create kbuley/binpot:$PROGRAM)" && \
  docker cp "$containerid:/bin" "/usr/local/bin/$PROGRAM" && \
  docker rm "$containerid"

Test Helm works with helm

TODOs

  • Change version of go-outline once a release tag is made: Github issue

About

The Docker based pot of binaries

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •