Skip to main content

Automated building/tagging/pushing of multiple Docker images in succession

Project description

Overview

This package provides a script which builds multiple Docker containers in sequence, using the contents of a docker_images.txt file in some directory. This file is tab-delimited, and lines starting with # are ignored.

Each non-comment line in docker_images.txt is of the format:

label    path/to/Dockerfile    comma,separated,options,if,desired

(with arbitrary whitespace between pieces). By default, images will be built by running docker build -t label -f Dockerfile . in the parent directory of the Dockerfile. Add the option base_directory_build after the Dockerfile to specify that the image should be built with:

docker build -t label -f path/to/Dockerfile .

in the directory containing docker_images.txt instead. If the default behavior is acceptable, the third tab-delimited piece of each line can be omitted.

Docker images will be built in sequence, so images can refer to the results of previous images, e.g.:

image-base    base/Dockerfile
image-dev     dev/Dockerfile

with dev/Dockerfile containing:

FROM image-base
...

Since images are unconditionally built with the latest tag, first, then tagged with a timestamp if desired, no Dockerfile needs to be modified for a “release” image.

The container build script checks for any uninitialized Git submodules, and by default refuses to build if any are found. This can be overridden if desired (see below).

The build option write_git_version accepts a file path argument, to which the output of git describe --dirty --always --abbrev=12 is written. For example:

image_label    path/to/Dockerfile    write_git_version=src/revision.txt

Usage

The command-line entry point provided by this script is build_docker_images. By default, images will be tagged with :latest appended to the base image name.

Options:

--tag-timestamp

In addition to tagging images as latest, also tag with a timestamp in YYYYMMDD-HHmmss format. All images in docker_images.txt are tagged with the same timestamp. Can be combined with --tag=tag_name.

--tag=tag_name

In addition to tagging images as latest, also tag with the tag name provided. All images in docker_images.txt are tagged with the same tag name. Can be combined with --tag-timestamp.

--push

Push all built containers to Docker Hub, tagged as latest and with any additional tags specified via --tag-timestamp or --tag=tag_name.

--ignore-missing-submodules

Allow building Docker containers if git submodule reports that at least one submodule is uninitialized.

--pretend

Run in pretend mode: don’t actually execute anything (building, tagging, pushing).

Requirements

Python 3.6 or newer for this script. Docker to build/tag/push images (version unimportant).

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

multi_docker_build-0.5-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file multi_docker_build-0.5-py3-none-any.whl.

File metadata

  • Download URL: multi_docker_build-0.5-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for multi_docker_build-0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c52dc21f3d4527e5eb17045993d7c269a0e1f98f06a1704167c2938fe61e4388
MD5 199c161ff4abfcfda411db85c3876740
BLAKE2b-256 ccda48929b1011b8ddbdf8b385eea3a7524f3d058bc5489912cefb07acff13d7

See more details on using hashes here.

Supported by

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