Skip to main content

EpicMorg: Buildah-Compose Wrapper - CLI wrapper for Buildah build system

Project description

Activity GitHub issues GitHub forks GitHub stars Size Release GitHub license Changelog PyPI - Downloads

Description

Python wrapper to run Buildah from the shell, driven by the build manifest in a docker-compose.yml file.

Motivation

  1. You have a Docker project that contains:
    1. docker-compose.yml — as the build manifest
    2. one or more Dockerfiles in the project
  2. You want to automate builds with the buildah build system.
  3. buildah does not natively consume docker-compose.yml for builds.

Requirements

  • Linux with the buildah binary on PATH (invoked as a native host binary — there is no executor image to pull).
  • Python >= 3.9.

How to

pip install buildah-wrapper
cd <...>/directory/containing/docker-and-docker-compose-file/
buildah-wrapper --build            # build into the local store
buildah-wrapper --build --deploy   # build, then push to the registry and mirrors
buildah-wrapper --deploy           # push already-built images
buildah-wrapper --clean            # remove all buildah containers and images

Running with no action prints the help screen.

Arguments

Actions are combinable (e.g. --build --deploy):

  • --build, -b — build images into the local store
  • --deploy, -d — push built images to the registry and all x-mirrors
  • --clean — remove all buildah containers and images

Options:

  • --compose-file FILE — path to the docker-compose.yml file (default: docker-compose.yml)
  • --squash / --no-squash — single-layer output for all services (default: off; per-service x-squash overrides it)
  • --verbose, -V — verbose output (shortcut for --log-level DEBUG)
  • --log-level LEVEL — override log level: DEBUG, INFO, WARNING, ERROR, CRITICAL
  • --version, -v — show script, Python and buildah versions
  • --help, -h — show the help message and exit

Supported features

1. Single project in docker-compose.yml

services:
  app:
    image: "epicmorg/buildah-wrapper:image"
    build:
      context: .
      dockerfile: ./Dockerfile

2. Multi-project in docker-compose.yml

services:
  app:
    image: "epicmorg/buildah-wrapper:image-jdk11"
    build:
      context: .
  app-develop:
    image: "epicmorg/buildah-wrapper:image-develop-jdk11"
    build:
      context: .
      dockerfile: ./Dockerfile.develop
  app-develop-17:
    image: "epicmorg/astralinux:image-develop-jdk17"
    build:
      context: .
      dockerfile: ./Dockerfile.develop-17

3. Mirrors — x-mirrors

Add an x-mirrors list to a service to push the built image to additional registries during --deploy. A failed push to any mirror fails the service.

services:
  app:
    image: docker.io/epicmorg/app:latest
    build:
      context: .
    x-mirrors:
      - quay.io/epicmorg/app:latest
      - ghcr.io/epicmorg/app:latest

4. Squash — x-squash

Add an x-squash field to a service to control single-layer output per service. Default is false. A per-service x-squash overrides the --squash / --no-squash CLI default for that service.

services:
  app:
    image: docker.io/epicmorg/app:latest
    build:
      context: .
    x-squash: true

Notes

  • buildah build runs with --format docker (OCI format does not carry HEALTHCHECK).
  • Builds run sequentially, so FROM chains (base -> runtime -> app) resolve in order.
  • Pushes use the default registry auth (~/.config/containers/auth.json or REGISTRY_AUTH_FILE).

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

buildah_wrapper-2.0.2.6.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

buildah_wrapper-2.0.2.6-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file buildah_wrapper-2.0.2.6.tar.gz.

File metadata

  • Download URL: buildah_wrapper-2.0.2.6.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for buildah_wrapper-2.0.2.6.tar.gz
Algorithm Hash digest
SHA256 16e2632ede51a207e0bd4e346858ff3796fa9cd274cf0bcd5a9ec529e0515e1b
MD5 1e11943db2212b6f5bd30a826045a8b8
BLAKE2b-256 21ca6bd63898e6a6269c8e9cd29fa94153b24ec202e39d90f3a6672874ff88fb

See more details on using hashes here.

File details

Details for the file buildah_wrapper-2.0.2.6-py3-none-any.whl.

File metadata

File hashes

Hashes for buildah_wrapper-2.0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7ad226efd7025d9e64252089c8ad14938df628cc39a17a3717cffb00608fde4b
MD5 eba96a56a974023dbcc349f2ddc0e8aa
BLAKE2b-256 37265ca24952e3a93fcfa50e86272e64f2cf87b6e671129eff831346539917bb

See more details on using hashes here.

Supported by

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