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:
-
Create a new repository based on the template repository.
-
Fill in
dibber.toml: Basically you need to set up your GitHub username prefixed by theghcr.iofor them to land in GitHub packages -
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 yourDockerfileand accompanying files under<image>/<version>/ -
Additional tags: In
<image>/<version>/config.yamlyou can define additional tags for the built image, likelatest, 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-tagsto 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 buildbuilds all images for the current platform only withdocker buildunder the hood. It's suitable for local development of the imagesdibber build-multiplatformbuilds all images usingdocker buildx buildfor 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 .
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)
| File | Size | Uploaded | |
|---|---|---|---|
| dibber-1.1.12.tar.gz | 11.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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