From 6b7b3bd6ca3a032f393d52ce72a419235804496f Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Fri, 1 Aug 2014 15:15:58 -0600 Subject: [PATCH] Add a new script to make it trivial and less error-prone to perform a mass version-bump --- Dockerfile.template | 35 +++++++++++++++++++++++++++++++++++ update.sh | 25 +++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 Dockerfile.template create mode 100755 update.sh diff --git a/Dockerfile.template b/Dockerfile.template new file mode 100644 index 0000000000..02e8f02a2d --- /dev/null +++ b/Dockerfile.template @@ -0,0 +1,35 @@ +# vim:set ft=dockerfile: +FROM debian:wheezy + +# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added +RUN groupadd -r postgres && useradd -r -g postgres postgres + +RUN apt-get update && apt-get install -y curl + +RUN curl -o /usr/local/bin/gosu -SL 'https://github.com/tianon/gosu/releases/download/1.1/gosu' \ + && chmod +x /usr/local/bin/gosu + +ENV PG_MAJOR %%PG_MAJOR%% +ENV PG_VERSION %%PG_VERSION%% + +RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list \ + && curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc \ + | apt-key add - ED6D65271AACF0FF15D123036FB2A1C265FFB764 + +RUN apt-get update \ + && apt-get install -y postgresql-common \ + && sed -ri 's/#(create_main_cluster) .*$/\1 = false/' /etc/postgresql-common/createcluster.conf \ + && apt-get install -y \ + postgresql-$PG_MAJOR=$PG_VERSION \ + postgresql-contrib-$PG_MAJOR=$PG_VERSION + +ENV PATH /usr/lib/postgresql/$PG_MAJOR/bin:$PATH +ENV PGDATA /var/lib/postgresql/data +VOLUME /var/lib/postgresql/data + +ADD ./docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] + +EXPOSE 5432 +CMD ["postgres"] diff --git a/update.sh b/update.sh new file mode 100755 index 0000000000..e3d0d790a7 --- /dev/null +++ b/update.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -e + +cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" + +versions=( "$@" ) +if [ ${#versions[@]} -eq 0 ]; then + versions=( */ ) +fi +versions=( "${versions[@]%/}" ) + +packagesUrl='http://apt.postgresql.org/pub/repos/apt/dists/wheezy-pgdg/main/binary-amd64/Packages' +packages="$(echo "$packagesUrl" | sed -r 's/[^a-zA-Z.-]+/-/g')" +curl -sSL "${packagesUrl}.bz2" | bunzip2 > "$packages" + +for version in "${versions[@]}"; do + fullVersion="$(grep -m1 -A10 "^Package: postgresql-$version\$" "$packages" | grep -m1 '^Version: ' | cut -d' ' -f2)" + ( + set -x + cp Dockerfile.template "$version/Dockerfile" + sed -i 's/%%PG_MAJOR%%/'$version'/g; s/%%PG_VERSION%%/'$fullVersion'/g' "$version/Dockerfile" + ) +done + +rm "$packages"