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:
-
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dibber-1.0.3.tar.gz.
File metadata
- Download URL: dibber-1.0.3.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16ddb2cbf8f941b3cfefb402584900a694fcdfd56032ee8e56eb753986ea36dd
|
|
| MD5 |
dee96f9bcb9cfe0cbf18428d5f82d90b
|
|
| BLAKE2b-256 |
e2d936312b4b04018f74c026bd5ca0f9ed59c686607bc7fb946e53bcd1c7fa85
|
Provenance
The following attestation bundles were made for dibber-1.0.3.tar.gz:
Publisher:
build-and-upload.yaml on lietu/dibber
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dibber-1.0.3.tar.gz -
Subject digest:
16ddb2cbf8f941b3cfefb402584900a694fcdfd56032ee8e56eb753986ea36dd - Sigstore transparency entry: 499655892
- Sigstore integration time:
-
Permalink:
lietu/dibber@1aee2c898bd4ad8df121f35acccc0d44136f7395 -
Branch / Tag:
refs/tags/1.0.3 - Owner: https://github.com/lietu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-and-upload.yaml@1aee2c898bd4ad8df121f35acccc0d44136f7395 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dibber-1.0.3-py3-none-any.whl.
File metadata
- Download URL: dibber-1.0.3-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9c89ab5d9aa07ae094a041aee031ccc6a444f70b71e33744546ce1d081bbd8f
|
|
| MD5 |
5316c167812d659cbdd9418346c4a064
|
|
| BLAKE2b-256 |
68084ac57d47fa3e13221b2ec7a2d4de2ec4e48d5921a9fe8baf28d4a1658a95
|
Provenance
The following attestation bundles were made for dibber-1.0.3-py3-none-any.whl:
Publisher:
build-and-upload.yaml on lietu/dibber
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dibber-1.0.3-py3-none-any.whl -
Subject digest:
c9c89ab5d9aa07ae094a041aee031ccc6a444f70b71e33744546ce1d081bbd8f - Sigstore transparency entry: 499655920
- Sigstore integration time:
-
Permalink:
lietu/dibber@1aee2c898bd4ad8df121f35acccc0d44136f7395 -
Branch / Tag:
refs/tags/1.0.3 - Owner: https://github.com/lietu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-and-upload.yaml@1aee2c898bd4ad8df121f35acccc0d44136f7395 -
Trigger Event:
push
-
Statement type: