From 7cb59fec75e353be5ab80cb79ad8be8a4c6f52f2 Mon Sep 17 00:00:00 2001 From: Christopher Eagan Date: Fri, 21 Aug 2015 16:53:39 -0400 Subject: [PATCH 1/2] Install PostGIS version of PostgreSQL. --- {9.0 => 9.0-2.1}/Dockerfile | 4 +- {9.0 => 9.0-2.1}/docker-entrypoint.sh | 0 {9.1 => 9.1-2.1}/Dockerfile | 4 +- {9.1 => 9.1-2.1}/docker-entrypoint.sh | 0 {9.2 => 9.2-2.1}/Dockerfile | 4 +- {9.2 => 9.2-2.1}/docker-entrypoint.sh | 0 {9.3 => 9.3-2.1}/Dockerfile | 4 +- {9.3 => 9.3-2.1}/docker-entrypoint.sh | 0 {9.4 => 9.4-2.1}/Dockerfile | 4 +- {9.4 => 9.4-2.1}/docker-entrypoint.sh | 0 9.5/Dockerfile | 50 ------------ 9.5/docker-entrypoint.sh | 109 -------------------------- Dockerfile.template | 4 +- generate-stackbrew-library.sh | 9 ++- update.sh | 9 ++- 15 files changed, 30 insertions(+), 171 deletions(-) rename {9.0 => 9.0-2.1}/Dockerfile (93%) rename {9.0 => 9.0-2.1}/docker-entrypoint.sh (100%) mode change 100755 => 100644 rename {9.1 => 9.1-2.1}/Dockerfile (93%) rename {9.1 => 9.1-2.1}/docker-entrypoint.sh (100%) mode change 100755 => 100644 rename {9.2 => 9.2-2.1}/Dockerfile (93%) rename {9.2 => 9.2-2.1}/docker-entrypoint.sh (100%) mode change 100755 => 100644 rename {9.3 => 9.3-2.1}/Dockerfile (93%) rename {9.3 => 9.3-2.1}/docker-entrypoint.sh (100%) mode change 100755 => 100644 rename {9.4 => 9.4-2.1}/Dockerfile (93%) rename {9.4 => 9.4-2.1}/docker-entrypoint.sh (100%) mode change 100755 => 100644 delete mode 100644 9.5/Dockerfile delete mode 100755 9.5/docker-entrypoint.sh diff --git a/9.0/Dockerfile b/9.0-2.1/Dockerfile similarity index 93% rename from 9.0/Dockerfile rename to 9.0-2.1/Dockerfile index 402d06a64c..c291856ebc 100644 --- a/9.0/Dockerfile +++ b/9.0-2.1/Dockerfile @@ -25,6 +25,8 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A4 ENV PG_MAJOR 9.0 ENV PG_VERSION 9.0.22-1.pgdg80+1 +ENV PGIS_MAJOR 2.1 +ENV PGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list @@ -32,7 +34,7 @@ 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-$PG_MAJOR-postgis-$PGIS_MAJOR=$PGIS_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/9.0/docker-entrypoint.sh b/9.0-2.1/docker-entrypoint.sh old mode 100755 new mode 100644 similarity index 100% rename from 9.0/docker-entrypoint.sh rename to 9.0-2.1/docker-entrypoint.sh diff --git a/9.1/Dockerfile b/9.1-2.1/Dockerfile similarity index 93% rename from 9.1/Dockerfile rename to 9.1-2.1/Dockerfile index bee13968f9..55086073cb 100644 --- a/9.1/Dockerfile +++ b/9.1-2.1/Dockerfile @@ -25,6 +25,8 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A4 ENV PG_MAJOR 9.1 ENV PG_VERSION 9.1.18-1.pgdg80+1 +ENV PGIS_MAJOR 2.1 +ENV PGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list @@ -32,7 +34,7 @@ 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-$PG_MAJOR-postgis-$PGIS_MAJOR=$PGIS_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/9.1/docker-entrypoint.sh b/9.1-2.1/docker-entrypoint.sh old mode 100755 new mode 100644 similarity index 100% rename from 9.1/docker-entrypoint.sh rename to 9.1-2.1/docker-entrypoint.sh diff --git a/9.2/Dockerfile b/9.2-2.1/Dockerfile similarity index 93% rename from 9.2/Dockerfile rename to 9.2-2.1/Dockerfile index 61bc7afff3..fa8fb8fefb 100644 --- a/9.2/Dockerfile +++ b/9.2-2.1/Dockerfile @@ -25,6 +25,8 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A4 ENV PG_MAJOR 9.2 ENV PG_VERSION 9.2.13-1.pgdg80+1 +ENV PGIS_MAJOR 2.1 +ENV PGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list @@ -32,7 +34,7 @@ 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-$PG_MAJOR-postgis-$PGIS_MAJOR=$PGIS_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/9.2/docker-entrypoint.sh b/9.2-2.1/docker-entrypoint.sh old mode 100755 new mode 100644 similarity index 100% rename from 9.2/docker-entrypoint.sh rename to 9.2-2.1/docker-entrypoint.sh diff --git a/9.3/Dockerfile b/9.3-2.1/Dockerfile similarity index 93% rename from 9.3/Dockerfile rename to 9.3-2.1/Dockerfile index afdb379a60..61ebb54fd3 100644 --- a/9.3/Dockerfile +++ b/9.3-2.1/Dockerfile @@ -25,6 +25,8 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A4 ENV PG_MAJOR 9.3 ENV PG_VERSION 9.3.9-1.pgdg80+1 +ENV PGIS_MAJOR 2.1 +ENV PGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list @@ -32,7 +34,7 @@ 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-$PG_MAJOR-postgis-$PGIS_MAJOR=$PGIS_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/9.3/docker-entrypoint.sh b/9.3-2.1/docker-entrypoint.sh old mode 100755 new mode 100644 similarity index 100% rename from 9.3/docker-entrypoint.sh rename to 9.3-2.1/docker-entrypoint.sh diff --git a/9.4/Dockerfile b/9.4-2.1/Dockerfile similarity index 93% rename from 9.4/Dockerfile rename to 9.4-2.1/Dockerfile index 4031cda3f9..a28b8c074b 100644 --- a/9.4/Dockerfile +++ b/9.4-2.1/Dockerfile @@ -25,6 +25,8 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A4 ENV PG_MAJOR 9.4 ENV PG_VERSION 9.4.4-1.pgdg80+1 +ENV PGIS_MAJOR 2.1 +ENV PGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list @@ -32,7 +34,7 @@ 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-$PG_MAJOR-postgis-$PGIS_MAJOR=$PGIS_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/9.4/docker-entrypoint.sh b/9.4-2.1/docker-entrypoint.sh old mode 100755 new mode 100644 similarity index 100% rename from 9.4/docker-entrypoint.sh rename to 9.4-2.1/docker-entrypoint.sh diff --git a/9.5/Dockerfile b/9.5/Dockerfile deleted file mode 100644 index a11f866ca6..0000000000 --- a/9.5/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -# vim:set ft=dockerfile: -FROM debian:jessie - -# 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 - -# grab gosu for easy step-down from root -RUN gpg --keyserver pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 -RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ - && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture)" \ - && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture).asc" \ - && gpg --verify /usr/local/bin/gosu.asc \ - && rm /usr/local/bin/gosu.asc \ - && chmod +x /usr/local/bin/gosu \ - && apt-get purge -y --auto-remove ca-certificates wget - -# make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default -RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ - && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 -ENV LANG en_US.utf8 - -RUN mkdir /docker-entrypoint-initdb.d - -RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 - -ENV PG_MAJOR 9.5 -ENV PG_VERSION 9.5~alpha2-1.pgdg80+1 - -RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list - -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 \ - && rm -rf /var/lib/apt/lists/* - -RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql - -ENV PATH /usr/lib/postgresql/$PG_MAJOR/bin:$PATH -ENV PGDATA /var/lib/postgresql/data -VOLUME /var/lib/postgresql/data - -COPY docker-entrypoint.sh / - -ENTRYPOINT ["/docker-entrypoint.sh"] - -EXPOSE 5432 -CMD ["postgres"] diff --git a/9.5/docker-entrypoint.sh b/9.5/docker-entrypoint.sh deleted file mode 100755 index 42a383de78..0000000000 --- a/9.5/docker-entrypoint.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -set -e - -set_listen_addresses() { - sedEscapedValue="$(echo "$1" | sed 's/[\/&]/\\&/g')" - sed -ri "s/^#?(listen_addresses\s*=\s*)\S+/\1'$sedEscapedValue'/" "$PGDATA/postgresql.conf" -} - -if [ "$1" = 'postgres' ]; then - mkdir -p "$PGDATA" - chown -R postgres "$PGDATA" - - chmod g+s /run/postgresql - chown -R postgres /run/postgresql - - # look specifically for PG_VERSION, as it is expected in the DB dir - if [ ! -s "$PGDATA/PG_VERSION" ]; then - gosu postgres initdb - - # check password first so we can output the warning before postgres - # messes it up - if [ "$POSTGRES_PASSWORD" ]; then - pass="PASSWORD '$POSTGRES_PASSWORD'" - authMethod=md5 - else - # The - option suppresses leading tabs but *not* spaces. :) - cat >&2 <<-'EOWARN' - **************************************************** - WARNING: No password has been set for the database. - This will allow anyone with access to the - Postgres port to access your database. In - Docker's default configuration, this is - effectively any other container on the same - system. - - Use "-e POSTGRES_PASSWORD=password" to set - it in "docker run". - **************************************************** - EOWARN - - pass= - authMethod=trust - fi - - { echo; echo "host all all 0.0.0.0/0 $authMethod"; } >> "$PGDATA/pg_hba.conf" - - set_listen_addresses '' # we're going to start up postgres, but it's not ready for use yet (this is initialization), so don't listen to the outside world yet - - gosu postgres "$@" & - pid="$!" - for i in {30..0}; do - if echo 'SELECT 1' | psql --username postgres &> /dev/null; then - break - fi - echo 'PostgreSQL init process in progress...' - sleep 1 - done - if [ "$i" = 0 ]; then - echo >&2 'PostgreSQL init process failed' - exit 1 - fi - - : ${POSTGRES_USER:=postgres} - : ${POSTGRES_DB:=$POSTGRES_USER} - - if [ "$POSTGRES_DB" != 'postgres' ]; then - psql --username postgres <<-EOSQL - CREATE DATABASE "$POSTGRES_DB" ; - EOSQL - echo - fi - - if [ "$POSTGRES_USER" = 'postgres' ]; then - op='ALTER' - else - op='CREATE' - fi - - psql --username postgres <<-EOSQL - $op USER "$POSTGRES_USER" WITH SUPERUSER $pass ; - EOSQL - echo - - echo - for f in /docker-entrypoint-initdb.d/*; do - case "$f" in - *.sh) echo "$0: running $f"; . "$f" ;; - *.sql) echo "$0: running $f"; psql --username postgres --dbname "$POSTGRES_DB" < "$f" && echo ;; - *) echo "$0: ignoring $f" ;; - esac - echo - done - - if ! kill -s TERM "$pid" || ! wait "$pid"; then - echo >&2 'PostgreSQL init process failed' - exit 1 - fi - - set_listen_addresses '*' - - echo - echo 'PostgreSQL init process complete; ready for start up.' - echo - fi - - exec gosu postgres "$@" -fi - -exec "$@" diff --git a/Dockerfile.template b/Dockerfile.template index a754e4786b..f10a5ac56e 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -25,6 +25,8 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A4 ENV PG_MAJOR %%PG_MAJOR%% ENV PG_VERSION %%PG_VERSION%% +ENV PGIS_MAJOR %%PGIS_MAJOR%% +ENV PGIS_VERSION %%PGIS_VERSION%% RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list @@ -32,7 +34,7 @@ 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-$PG_MAJOR-postgis-$PGIS_MAJOR=$PGIS_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && rm -rf /var/lib/apt/lists/* diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 109ccb86c3..6dd1ab1a2f 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -3,21 +3,22 @@ set -e declare -A aliases aliases=( - [9.4]='9 latest' + [9.4-2.1]='9-2 9 latest' ) cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" versions=( */ ) versions=( "${versions[@]%/}" ) -url='git://github.com/docker-library/postgres' +url='git://github.com/docker-library/postgres-postgis' echo '# maintainer: InfoSiftr (@infosiftr)' for version in "${versions[@]}"; do commit="$(cd "$version" && git log -1 --format='format:%H' -- Dockerfile $(awk 'toupper($1) == "COPY" { for (i = 2; i < NF; i++) { print $i } }' Dockerfile))" - fullVersion="$(grep -m1 'ENV PG_VERSION ' "$version/Dockerfile" | cut -d' ' -f3 | cut -d- -f1 | sed 's/~/-/g')" - versionAliases=( $fullVersion $version ${aliases[$version]} ) + pgFullVersion="$(grep -m1 'ENV PG_VERSION ' "$version/Dockerfile" | cut -d' ' -f3 | cut -d- -f1 | sed 's/~/-/g')" + pgisFullVersion="$(grep -m1 'ENV PGIS_VERSION ' "$version/Dockerfile" | cut -d' ' -f3 | cut -d+ -f1 | sed 's/~/-/g')" + versionAliases=( $pgFullVersion-$pgisFullVersion $version ${aliases[$version]} ) echo for va in "${versionAliases[@]}"; do diff --git a/update.sh b/update.sh index 17da65ab6b..5ec0fdf1d9 100755 --- a/update.sh +++ b/update.sh @@ -14,12 +14,17 @@ 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)" + splitPos=$(expr index "$version" '-') + pgVersion=${version:0:$(($splitPos - 1))} + pgFullVersion="$(grep -m1 -A10 "^Package: postgresql-$pgVersion\$" "$packages" | grep -m1 '^Version: ' | cut -d' ' -f2)" + pgisVersion=${version:$splitPos} + pgisFullVersion="$(grep -m1 -A10 "^Package: postgresql-$pgVersion-postgis-$pgisVersion\$" "$packages" | grep -m1 '^Version: ' | cut -d' ' -f2)" ( set -x cp docker-entrypoint.sh Dockerfile.template "$version/" mv "$version/Dockerfile.template" "$version/Dockerfile" - sed -i 's/%%PG_MAJOR%%/'$version'/g; s/%%PG_VERSION%%/'$fullVersion'/g' "$version/Dockerfile" + sed -i 's/%%PG_MAJOR%%/'$pgVersion'/g; s/%%PG_VERSION%%/'$pgFullVersion'/g' "$version/Dockerfile" + sed -i 's/%%PGIS_MAJOR%%/'$pgisVersion'/g; s/%%PGIS_VERSION%%/'$pgisFullVersion'/g' "$version/Dockerfile" ) done From 73bd89b4e1170232fb49345bc71fe71002016e9d Mon Sep 17 00:00:00 2001 From: Christopher Eagan Date: Sun, 23 Aug 2015 18:28:54 -0400 Subject: [PATCH 2/2] Fix permissions on .sh files. --- 9.0-2.1/docker-entrypoint.sh | 0 9.1-2.1/docker-entrypoint.sh | 0 9.2-2.1/docker-entrypoint.sh | 0 9.3-2.1/docker-entrypoint.sh | 0 9.4-2.1/docker-entrypoint.sh | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 9.0-2.1/docker-entrypoint.sh mode change 100644 => 100755 9.1-2.1/docker-entrypoint.sh mode change 100644 => 100755 9.2-2.1/docker-entrypoint.sh mode change 100644 => 100755 9.3-2.1/docker-entrypoint.sh mode change 100644 => 100755 9.4-2.1/docker-entrypoint.sh diff --git a/9.0-2.1/docker-entrypoint.sh b/9.0-2.1/docker-entrypoint.sh old mode 100644 new mode 100755 diff --git a/9.1-2.1/docker-entrypoint.sh b/9.1-2.1/docker-entrypoint.sh old mode 100644 new mode 100755 diff --git a/9.2-2.1/docker-entrypoint.sh b/9.2-2.1/docker-entrypoint.sh old mode 100644 new mode 100755 diff --git a/9.3-2.1/docker-entrypoint.sh b/9.3-2.1/docker-entrypoint.sh old mode 100644 new mode 100755 diff --git a/9.4-2.1/docker-entrypoint.sh b/9.4-2.1/docker-entrypoint.sh old mode 100644 new mode 100755