Skip to main content

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"

Metadata

Release files for dibber 1.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dibber 1.1.12
File Size Uploaded
dibber-1.1.12.tar.gz 11.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dibber 1.1.12
File Interpreter ABI Platform
dibber-1.1.12-py3-none-any.whl Python 3 none any Details

Total release size: 22.9 kB

Release files / dibber-1.1.12.tar.gz

Download URL dibber-1.1.12.tar.gz
Size 11.3 kB
Tags Source
SHA-256 checksum
How to use checksums
adc4ab5c150601b8321afeab0e8bdbfbc118ba98add86d1684696291f172cac0
BLAKE2b-256 checksum
How to use checksums
ce81135221719fb787c84033541bc456ceb4feb9ce11e9462c3d1863ad7df173
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2025.

Transparency log

Release files / dibber-1.1.12-py3-none-any.whl

Download URL dibber-1.1.12-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e4451bc81dc8cfb5f1b6c82c86d251f122c35eab259df49ef1ac5e45ca54ea6
BLAKE2b-256 checksum
How to use checksums
5c1892faff646f2fe3d70dff55049fe8163bdf2879e183e203b2e73cd0b6c325
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.12 This release

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page