From 31f3a471bc7ff2ee362d7735262f1dc26040f0f3 Mon Sep 17 00:00:00 2001 From: Elliott Shugerman Date: Thu, 28 May 2020 23:59:14 -0600 Subject: [PATCH] use build args instead of templating --- template.Dockerfile => Dockerfile | 11 ++++++----- hooks/build | 17 +++++++++++++++++ hooks/push | 10 ++++++++++ render.py | 25 ------------------------- src/10.Dockerfile | 29 ----------------------------- src/11.Dockerfile | 29 ----------------------------- src/12.Dockerfile | 29 ----------------------------- src/9.Dockerfile | 29 ----------------------------- src/install.sh | 4 ++-- 9 files changed, 35 insertions(+), 148 deletions(-) rename template.Dockerfile => Dockerfile (70%) create mode 100755 hooks/build create mode 100755 hooks/push delete mode 100755 render.py delete mode 100644 src/10.Dockerfile delete mode 100644 src/11.Dockerfile delete mode 100644 src/12.Dockerfile delete mode 100644 src/9.Dockerfile diff --git a/template.Dockerfile b/Dockerfile similarity index 70% rename from template.Dockerfile rename to Dockerfile index fd33ef8..e3552f8 100644 --- a/template.Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ -FROM alpine:{alpine_version} +ARG ALPINE_VERSION +FROM alpine:${ALPINE_VERSION} -ADD install.sh install.sh +ADD src/install.sh install.sh RUN sh install.sh && rm install.sh ENV POSTGRES_DATABASE '' @@ -19,8 +20,8 @@ ENV S3_S3V4 'no' ENV SCHEDULE '' ENV PASSPHRASE '' -ADD run.sh run.sh -ADD backup.sh backup.sh -ADD restore.sh restore.sh +ADD src/run.sh run.sh +ADD src/backup.sh backup.sh +ADD src/restore.sh restore.sh CMD ["sh", "run.sh"] diff --git a/hooks/build b/hooks/build new file mode 100755 index 0000000..ef907ac --- /dev/null +++ b/hooks/build @@ -0,0 +1,17 @@ +#!/bin/bash +set -eux + +declare -A arr +arr[9]=3.6 +arr[10]=3.8 +arr[11]=3.10 +arr[12]=edge + + +for i in "${!arr[@]}"; do + docker build \ + --build-arg "ALPINE_VERSION=${arr[$i]}" \ + --tag "postgres-backup-s3:$i" \ + . +done + diff --git a/hooks/push b/hooks/push new file mode 100755 index 0000000..7af6757 --- /dev/null +++ b/hooks/push @@ -0,0 +1,10 @@ +#!/bin/bash + +set -eux + +pg_versions=(9 10 11 12) + +for pg_ver in ${pg_versions[@]}; do + docker tag postgres-backup-s3:$pg_ver $DOCKER_REPO:$pg_ver + docker push $DOCKER_REPO:$pg_ver +done diff --git a/render.py b/render.py deleted file mode 100755 index 455b1aa..0000000 --- a/render.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/python3 - -VERSIONS = ( - ('9', '3.6'), - ('10', '3.8'), - ('11', '3.10'), - ('12', 'edge'), -) - - -def render(postgres_version, alpine_version): - with open(f'template.Dockerfile') as f: - template = f.read() - - rendered = template.format(alpine_version=alpine_version) - - with open(f'src/{postgres_version}.Dockerfile', 'w') as f: - f.write('# This file is generated from template.Dockerfile. Do not edit it directly.\n') - f.write('###########################################################################\n\n') - f.write(rendered) - - -if __name__ == '__main__': - for versions in VERSIONS: - render(*versions) diff --git a/src/10.Dockerfile b/src/10.Dockerfile deleted file mode 100644 index 6938a1b..0000000 --- a/src/10.Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# This file is generated from template.Dockerfile. Do not edit it directly. -########################################################################### - -FROM alpine:3.8 - -ADD install.sh install.sh -RUN sh install.sh && rm install.sh - -ENV POSTGRES_DATABASE '' -ENV POSTGRES_HOST '' -ENV POSTGRES_PORT 5432 -ENV POSTGRES_USER '' -ENV POSTGRES_PASSWORD '' -ENV PGDUMP_EXTRA_OPTS '' -ENV S3_ACCESS_KEY_ID '' -ENV S3_SECRET_ACCESS_KEY '' -ENV S3_BUCKET '' -ENV S3_REGION 'us-west-1' -ENV S3_PATH 'backup' -ENV S3_ENDPOINT '' -ENV S3_S3V4 'no' -ENV SCHEDULE '' -ENV PASSPHRASE '' - -ADD run.sh run.sh -ADD backup.sh backup.sh -ADD restore.sh restore.sh - -CMD ["sh", "run.sh"] diff --git a/src/11.Dockerfile b/src/11.Dockerfile deleted file mode 100644 index 4fc9334..0000000 --- a/src/11.Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# This file is generated from template.Dockerfile. Do not edit it directly. -########################################################################### - -FROM alpine:3.10 - -ADD install.sh install.sh -RUN sh install.sh && rm install.sh - -ENV POSTGRES_DATABASE '' -ENV POSTGRES_HOST '' -ENV POSTGRES_PORT 5432 -ENV POSTGRES_USER '' -ENV POSTGRES_PASSWORD '' -ENV PGDUMP_EXTRA_OPTS '' -ENV S3_ACCESS_KEY_ID '' -ENV S3_SECRET_ACCESS_KEY '' -ENV S3_BUCKET '' -ENV S3_REGION 'us-west-1' -ENV S3_PATH 'backup' -ENV S3_ENDPOINT '' -ENV S3_S3V4 'no' -ENV SCHEDULE '' -ENV PASSPHRASE '' - -ADD run.sh run.sh -ADD backup.sh backup.sh -ADD restore.sh restore.sh - -CMD ["sh", "run.sh"] diff --git a/src/12.Dockerfile b/src/12.Dockerfile deleted file mode 100644 index 00382dc..0000000 --- a/src/12.Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# This file is generated from template.Dockerfile. Do not edit it directly. -########################################################################### - -FROM alpine:edge - -ADD install.sh install.sh -RUN sh install.sh && rm install.sh - -ENV POSTGRES_DATABASE '' -ENV POSTGRES_HOST '' -ENV POSTGRES_PORT 5432 -ENV POSTGRES_USER '' -ENV POSTGRES_PASSWORD '' -ENV PGDUMP_EXTRA_OPTS '' -ENV S3_ACCESS_KEY_ID '' -ENV S3_SECRET_ACCESS_KEY '' -ENV S3_BUCKET '' -ENV S3_REGION 'us-west-1' -ENV S3_PATH 'backup' -ENV S3_ENDPOINT '' -ENV S3_S3V4 'no' -ENV SCHEDULE '' -ENV PASSPHRASE '' - -ADD run.sh run.sh -ADD backup.sh backup.sh -ADD restore.sh restore.sh - -CMD ["sh", "run.sh"] diff --git a/src/9.Dockerfile b/src/9.Dockerfile deleted file mode 100644 index f3705e9..0000000 --- a/src/9.Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# This file is generated from template.Dockerfile. Do not edit it directly. -########################################################################### - -FROM alpine:3.6 - -ADD install.sh install.sh -RUN sh install.sh && rm install.sh - -ENV POSTGRES_DATABASE '' -ENV POSTGRES_HOST '' -ENV POSTGRES_PORT 5432 -ENV POSTGRES_USER '' -ENV POSTGRES_PASSWORD '' -ENV PGDUMP_EXTRA_OPTS '' -ENV S3_ACCESS_KEY_ID '' -ENV S3_SECRET_ACCESS_KEY '' -ENV S3_BUCKET '' -ENV S3_REGION 'us-west-1' -ENV S3_PATH 'backup' -ENV S3_ENDPOINT '' -ENV S3_S3V4 'no' -ENV SCHEDULE '' -ENV PASSPHRASE '' - -ADD run.sh run.sh -ADD backup.sh backup.sh -ADD restore.sh restore.sh - -CMD ["sh", "run.sh"] diff --git a/src/install.sh b/src/install.sh index ceafb9b..9e683f3 100644 --- a/src/install.sh +++ b/src/install.sh @@ -1,6 +1,6 @@ #! /bin/sh -set -e +set -eux set -o pipefail apk update @@ -11,8 +11,8 @@ apk add postgresql-client # install gpg apk add gnupg -# install s3 tools apk add python3 +apk add py3-pip # separate package on edge only pip3 install awscli # install go-cron