Skip to main content

A Docker build plugin for PyBuilder

Project description

PyBuilder Docker Build Plugin

Summary

This project is a plugin for PyBuilder that will perform a docker build for a Python package. PyBuilder Docker Build Plugin attempts to use sane defaults so that in most cases you only need add a Dockerfile to your project base directory and a docker image will be built when you call the appropriate task.

Usage

To use this plugin in your build.py file add the following line to the plugins section:

use_plugin('pypi:pybuilder_docker_build')

This will add the following tasks to your build:

Task Description
docker_build Performs docker build
docker_save Saves docker image to dist dir
docker_push Pushes docker image upstream to your repo

The following properties are available:

Property Value Default Usage
docker_cli True / False False Use docker cli to do build
docker_path str docker Path to docker executable
docker_build_path str basedir property Path to docker build directory
docker_build_file str Dockerfile Dockerfile to use for build, relative path from docker_build_path
docker_build_force_rm True / False False Use the force rm feature of docker build
docker_image_repo str project.name The name of the image repository
docker_image_tag str latest A tag to apply to the repository
docker_build_args dict None A dict of build args
docker_registry_auth dict None A dict containing username and password for login / auth
docker_registry str None A http / https URL of registry for authentication and push

By default there are several build args that are supplied to the docker build, additional args can be added with the docker_build_args property. The default build args are:

Argument Value
PROJECT_NAME project.name
PROJECT_VERSION project.version
PROJECT_DIST_VERSION project.dist_version
PROJECT_DIST_DIR The relative path from the docker_build_path property to $dir_dist

Authentication

If you need to push images to a registry then you probably need to set credentials. Don't do this directly in your build file but rather look them up from environment or use some other method for passing secrets to code. The following is an extract from the hello-world sample project in the samples directory:

@init
def set_properties(project: Project):
    project.set_property("docker_build_args", {"EXTRA_ARG": "Extra build arg"})
    project.set_property("docker_image_repo", "dockerhubusername/hello-world")
    # Don't put your credentials in code, look them up from environment or
    # use some other way to pass secrets to your code
    project.set_property(
        "docker_registry_auth",
        {
            "username": os.getenv("DOCKER_HUB_USERNAME"),
            "password": os.getenv("DOCKER_HUB_PASSWORD")
        }
    )

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

pybuilder-docker-build-0.5.1.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

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

pybuilder_docker_build-0.5.1-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file pybuilder-docker-build-0.5.1.tar.gz.

File metadata

  • Download URL: pybuilder-docker-build-0.5.1.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for pybuilder-docker-build-0.5.1.tar.gz
Algorithm Hash digest
SHA256 81182aa3578883f7bc694e8ab49721492f6c00421bd312854ca29a06df7bbbd3
MD5 60f859c829aa25562eb9f668146f61bf
BLAKE2b-256 2a4d7fca45a874f94f9de8aaf19ca3a53d99989da7ed3f484f514fd7b7f9f9c5

See more details on using hashes here.

File details

Details for the file pybuilder_docker_build-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pybuilder_docker_build-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9145b02e305c4ea6e173807fbb67b2626876ac4c9ca7d9cf5c08ebd9f54a836a
MD5 c5fae098a51d90bfd72af040f859d642
BLAKE2b-256 3b2844a3becc726a9d126ff1455993e1133608f39d89837dce13676f7d5bc03b

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