parallel_docker_build
Project description
parallel-docker-build
Docker image building workflow tool with options for concurrent builds. This
tool was developed after writing similar make
, bash
and python
scripts to
accomplish docker build
pipelines. The objectives for this tool are:
- Provide a single cmd line tool for flexible docker image building in repos with multiple images.
- Allow parallel/concurrent builds of these images.
- Allow image building pipelines to be defined in yaml instead of a bash script or Makefile with sequences of commands.
The expected folder structure is as follows:
- Docker files all begin with
Dockerfile
- Docker files build images which name comes from the parent directory.
- If a
Dockerfile
has suffixes (i.e.myimage/Dockerfile.focal.x86
) the suffixes will be appended to the image name:myimage_focal_x86
. - The suffixes allow multiple
Dockerfiles
to be defined for an image. This can be useful for multiple OS, arch, etc. - The
build
context is controllable so files can beCOPY
'd to the image from locations of your choice. NOTE that if theDockerfile
is not within the context, an error will be raised.
Install
pip3 install parallel-docker-build
Usage
There are two options for building images. Both have global options:
parallel-docker-build --help
# usage: parallel-docker-build [-h] [-r] [-q] {workflow,dockerfiles} ...
# Utility for building/tagging/pushing docker images.
# optional arguments:
# -h, --help show this help message and exit
# -r, --rebuild Rebuild with --no-cache option
# -q, --quiet Suppress stdout
# mode:
# {workflow,dockerfiles}
# Mode of specifying a build.
Command line args
The first option allows you to specify Dockerfiles or directories containing
Dockerfiles which will be found recursively. This mode is intended to build a
collection of docker files sequentially (--max_num_workers=1) or in parallel
with a max number of works fixed to half of your cpu_count
from
multiprocessing
.
parallel-docker-build dockerfiles --help
# usage: parallel-docker-build dockerfiles [-h] -o ORGANIZATION [-c CONTEXT] [-x] [-p] [-n MAX_NUM_WORKERS] paths [paths ...]
# positional arguments:
# paths Docker image filenames(s) or directories to search.
# optional arguments:
# -h, --help show this help message and exit
# -o ORGANIZATION, --organization ORGANIZATION
# Organization for images.
# -c CONTEXT, --context CONTEXT
# Build context. By default the current directory.
# -x, --allow_cross_platform
# Allow cross platform (x86 vs aarch64) building. Default is False.
# -p, --push Run docker push on the latest tag. Default is False.
# -n MAX_NUM_WORKERS, --max_num_workers MAX_NUM_WORKERS
# Maximum number of build workers. If >1 multiprocessing is used. Max value is half this computer's cpu count: 64. Default is 1.
Workflow file (yaml)
The second option allows you to specify a workflow file which contains the
options for the dockerfiles
mode in addition to multiple "stages" which
allow you to build groups of docker images sequentially as if calling
parallel-docker-build dockerfiles ...
sequentially. It also allows version
control of a workflow to build your images in a multi-image repo.
parallel-docker-build workflow --help
# usage: parallel-docker-build workflow [-h] workflow
# positional arguments:
# workflow Path to workflow yaml file image filenames(s).
# optional arguments:
# -h, --help show this help message and exit
TODO
- Add example workflow file
- finish CLI for relative list of docker files
- tagging configuration
- tests
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
Built Distribution
File details
Details for the file parallel-docker-build-0.3.0.tar.gz
.
File metadata
- Download URL: parallel-docker-build-0.3.0.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4184765bafb7f38f245ee757462c6cea04a10cbdb0f5b91350a4e805a7da6c85 |
|
MD5 | 1d29b134f8e32a1756ad83720a931119 |
|
BLAKE2b-256 | 78b3afce4570866493943e9ef894629531156f193e178c6973de315659bc232a |
File details
Details for the file parallel_docker_build-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: parallel_docker_build-0.3.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 180731537b75bdd7d851f2cd08e42d31f0a330c36aafc9f6771a97efe1bd3287 |
|
MD5 | 3931c7b4bee92d644a7f6a3fea2ddf1f |
|
BLAKE2b-256 | 3df6d05f96a6b605e3e1c01f373270a38e9af5c3917932d7b465d51fb66d6809 |