Skip to main content

🐳 Docker Auto-Builder & Publisher

Python Version Docker License

A powerful, zero-config Python utility that automates the Docker image lifecycle: Build, Tag, and Push.

It seamlessly integrates with your Git workflow, supporting both remote repository cloning and local development contexts, with built-in auto-versioning capabilities.

✨ Key Features

  • 🚀 Remote Clone & Build: Point to any Git URL, and it handles the rest.
  • 📍 Local Context Detection: Run it inside your repo—it auto-detects the root and correct remote.
  • 🏷️ Smart Tagging:
    • Auto-infers image names from your git remote (e.g., git@github.com:user/appuser/app).
    • Auto-Versioning: Automatically bumps your semantic version (patch level) based on the latest Git tag.
  • 🔐 Flexible Auth: Authenticate via CLI arguments, Environment Variables, or existing local sessions.
  • 📜 Beautiful Logs: Clear, colored output to track your build progress.

🛠️ Installation

Option 1: Development Usage

If you want to contribute or modify the code:

  1. Set up the Environment:
    python3 -m venv .venv
    source .venv/bin/activate
    
    # Install runtime + dev dependencies
    pip install -e .[dev]
    
  2. Run directly:
    buildpub
    

Option 2: Install as a System Command (Recommended)

You can install this tool globally using pipx to run it from anywhere in an isolated environment.

  1. Install via pipx:

    pipx install buildpub
    

    Note: If you receive a warning about PATH, run pipx ensurepath to fix it.

  2. Run it from anywhere:

    buildpub
    

🚀 Quick Start

1. Build from your Current Directory (Local Mode)

The most common use case. Go to your project folder and run:

# This detects the git repo, infers the image name, and builds 'latest'
buildpub

2. Auto-Version Bump

Automatically detect the latest git tag (e.g., v1.0.2), bump it (to v1.0.3), build, and push.

buildpub --auto-version

3. Build a Remote Repository

Build a specific branch from a remote URL without cloning it manually.

buildpub \
  --repo https://github.com/Start Bootstrap/startbootstrap-clean-blog.git \
  --image myuser/clean-blog \
  --tag v2.0

⚙️ Usage Reference

buildpub [OPTIONS]

Core Arguments

Flag Description Default
--repo Git repository URL. If omitted, checks current directory. None (Local)
--image Target Image Name (e.g., user/repo). Auto-inferred if omitted. Inferred
--tag Specific tag to use. Overridden if --auto-version is set. latest
--auto-version (Flag) If set, bumps the latest git tag (patch version). False
--dockerfile Relative path to the Dockerfile. Dockerfile
--platform Target platforms for multi-arch build (e.g., linux/amd64,linux/arm64). None

Environment & Context

Flag Description Default
--branch Branch to checkout (Only for Remote Build). main
--build-arg Pass build arguments (can be used multiple times).
Example: --build-arg ENV=prod
None

Authentication

Flag Description Env Variable
--username Registry Username DOCKER_USERNAME
--password Registry Token/Password DOCKER_PASSWORD
--registry Registry URL (e.g., ghcr.io) None (Docker Hub)
--verbose (Flag) Enable verbose logging (INFO level). Default is ERROR only. False

Pro Tip: For CI/CD environments, use the Environment Variables DOCKER_USERNAME and DOCKER_PASSWORD instead of flags for better security.


📦 Examples

🔹 Basic Build & Push

buildpub --tag production

Builds current local code, pushes as {inferred_name}:production.

🔹 Custom Dockerfile & Args

buildpub \
  --dockerfile build/Dockerfile.prod \
  --build-arg APP_ENV=production \
  --tag v1.5

🔹 CI/CD Workflow (with Env Vars)

export DOCKER_USERNAME="myuser"
export DOCKER_PASSWORD="mysecrettoken"

buildpub --auto-version

🌍 Multi-Architecture Builds

Building for multiple platforms (e.g., linux/amd64 and linux/arm64) requires the Docker Buildx plugin and a compatible builder instance.

1. Enable Buildx

If you see the error: Multi-platform build is not supported for the docker driver, it's because the default "docker" builder is too limited. Fix it by creating a new builder:

docker buildx create --use

2. Build & Push

Multi-arch images are built and pushed in a single atomic operation (this is handled automatically by buildpub when you use --platform).

buildpub --platform linux/amd64,linux/arm64 --tag v1.0.0

Download files

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

Source Distribution

buildpub-0.1.4.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

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

buildpub-0.1.4-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file buildpub-0.1.4.tar.gz.

File metadata

  • Download URL: buildpub-0.1.4.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for buildpub-0.1.4.tar.gz
Algorithm Hash digest
SHA256 7cf0c4c16ea994dc2240ae6aaee0e9bc3fe8088a7e721e5e5d5a24773b285484
MD5 6e8a039263771840ed444450dce22287
BLAKE2b-256 4ad52da7496959fba10de7c2cd9fd5e934e6f6dd566695d0f3c2f2eb0f774d92

See more details on using hashes here.

File details

Details for the file buildpub-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: buildpub-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for buildpub-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 37fbc27c17dcde94b2a003b700a4049aca1b9520cbd6e31e75609f1031fb6860
MD5 e9536ae386fa82ff4db15beba37fc8c2
BLAKE2b-256 434ec4d9be3e11d8b4655341296473b381a9852915069e3491a3362eff167bc9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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