#! /usr/bin/env python3 import argparse import re import sys from subprocess import call def main(): parser = argparse.ArgumentParser(description='Build postgresql in docker') parser.add_argument('--pg-version', dest='pg_version', default='9.6.3', help='Postgres version to build') parser.add_argument('--docker-tag', dest='docker_tag', default='postgres-custom', help='Docker tag to apply to the image. The version will be automatically added.') args = parser.parse_args() pg_version = args.pg_version docker_tag = args.docker_tag if not re.match('^[0-9]+\.[0-9]+\.[0-9]+', pg_version): print("Bad version format. Should be major.minor.fix (eg: 9.6.3)") sys.exit(64) pg_version_ = pg_version.replace('.', '_') split = pg_version.split('.') pg_major = split[0] + '.' + split[1] docker_tag_full = '%s:%s' % (docker_tag, pg_version) print('Building postgres:\nPG_MAJOR=%s\nPG_VERSION=%s\nPG_VERSION_=%s\nDocker tag: %s' % (pg_major, pg_version, pg_version_, docker_tag_full)) call(['docker', 'build', '-t', docker_tag_full, '--build-arg', 'PG_MAJOR=%s' % pg_major, '--build-arg', 'PG_VERSION=%s' % pg_version, '--build-arg', 'PG_VERSION_=%s' % pg_version_, '.']) if __name__ == '__main__': main()