Skip to main content

Dibber - Docker image manager

Project description

Dibber - Docker image builder

Builds your container images automatically, like magic. Good for handling common base images for all your projects, apps, whatever.

Usage examples:

How do you use this then?

If you want to use it with GitHub it takes just a few steps:

  1. Create a new repository based on the template repository.

  2. Fill in dibber.toml: Basically you need to set up your GitHub username prefixed by the ghcr.io for them to land in GitHub packages

  3. Images and versions: First level of subdirectories in this repo is "images", as in the repository names (username/<repository>) for Docker hub. The subdirectories in that defines the "versions" - basically default tags for things to be built for that repository. Put your Dockerfile and accompanying files under <image>/<version>/

  4. Additional tags: In <image>/<version>/config.yaml you can define additional tags for the built image, like latest, or whatever aliases you may want for it.

If you want to do it on your own pipelines, you can do the above but pay a bit more attention to dibber.toml and then on your pipeline agent run in the checkout:

pip install dibber
dibber build-multiplatform
dibber upload
dibber scan

If you have images other images depend on, check out the priority_builds -setting. Each list within it gets assigned a priority and can be built in parallel with --parallel argument, the rest of the images will then get built after everything in the priority_builds.

# Simple priority to a couple of images
priority_builds = [
   "ubuntu-base/20.04",
   "ubuntu-base/22.04",
]
# Tiered priorities of things that depend on earlier priorities
priority_builds = [
  [
      "ubuntu-base/20.04",
      "ubuntu-base/22.04",
  ],
  [
      "python-base/ubuntu20.04-python3.9",
      "python-base/ubuntu22.04-python3.10",
  ]
]

But what does it require?

You will need:

  • Docker CLI >= 20.10.0 (we use docker push --all-tags to save some time)
  • Python >= 3.11
  • uv (at least for development)

You can also use this to push to Dockerhub (but why would you want to). If you do you'll just need to add a DOCKERHUB_TOKEN secret ("token" is a personal access token) that will be used to log into your account for upload. This needs to be for the Docker hub user configured in dibber.toml.

The scan command uses trivy which you will need installed on your system first.

Multiplatform support

There are several technical restrictions when building images for multiple platforms with buildx, such as that buildx can't find an image in local docker environment (see notes in output section of the docs). But it's possible to push base images right away to a docker registry and then explicitly define this registry in FROM statements.

That's why there are 2 options to build images:

  • dibber build builds all images for the current platform only with docker build under the hood. It's suitable for local development of the images
  • dibber build-multiplatform builds all images using docker buildx build for linux/amd64 and linux/arm64. It requires extra setup (check pipeline code) and is not recommended for local development

Contributions

If you plan on contributing to the code ensure you use pre-commit to guarantee the code style stays uniform etc.

Also, please open an issue first to discuss the idea before sending a PR so that you know if it would be wanted or needs re-thinking or if you should just make a fork for yourself.

You'll likely want to clone this repository, then in its parent directory run:

uv tool install --editable dibber

If I use this it means you own my things, right?

No. You are responsible for and own your own things. This code is licensed under the BSD 3-clause license.

Financial support

This project has been made possible thanks to Cocreators and Lietu. You can help us continue our open source work by supporting us on Buy me a coffee .

"Buy Me A Coffee"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dibber-1.1.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dibber-1.1.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file dibber-1.1.1.tar.gz.

File metadata

  • Download URL: dibber-1.1.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dibber-1.1.1.tar.gz
Algorithm Hash digest
SHA256 48d14cdb86690060129d1f01f42b83bdfecf7ae598d0880986d0c5847dbf8cca
MD5 6c2dcd97e00551a1c2e3401f1aaa0184
BLAKE2b-256 c7ad07f745e564e8818d0ca1d65f982d5a84d8a863c32a81c116c98291db1fd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for dibber-1.1.1.tar.gz:

Publisher: build-and-upload.yaml on lietu/dibber

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dibber-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: dibber-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dibber-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c78fd0943ed15bc882b34c7dd3eb0854b85c8de72c8684f6d42bf597113bfaa8
MD5 7d5fd8c67cfb4e5439bd4866c25e5fe2
BLAKE2b-256 53ac4137915436de7e6a2db4bede5b0e77d7fef3271e83873135ffe429755b25

See more details on using hashes here.

Provenance

The following attestation bundles were made for dibber-1.1.1-py3-none-any.whl:

Publisher: build-and-upload.yaml on lietu/dibber

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page