diff --git a/8.4/docker-entrypoint.sh b/8.4/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/8.4/docker-entrypoint.sh +++ b/8.4/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f" diff --git a/9.0/docker-entrypoint.sh b/9.0/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/9.0/docker-entrypoint.sh +++ b/9.0/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f" diff --git a/9.1/docker-entrypoint.sh b/9.1/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/9.1/docker-entrypoint.sh +++ b/9.1/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f" diff --git a/9.2/docker-entrypoint.sh b/9.2/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/9.2/docker-entrypoint.sh +++ b/9.2/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f" diff --git a/9.3/docker-entrypoint.sh b/9.3/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/9.3/docker-entrypoint.sh +++ b/9.3/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f" diff --git a/9.4/Dockerfile b/9.4/Dockerfile index 9e6dca6137..872a4ed396 100644 --- a/9.4/Dockerfile +++ b/9.4/Dockerfile @@ -24,7 +24,7 @@ RUN mkdir /docker-entrypoint-initdb.d RUN apt-key adv --keyserver pgp.mit.edu --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 ENV PG_MAJOR 9.4 -ENV PG_VERSION 9.4~beta3-1.pgdg70+1 +ENV PG_VERSION 9.4~rc1-1.pgdg70+1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list diff --git a/9.4/docker-entrypoint.sh b/9.4/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/9.4/docker-entrypoint.sh +++ b/9.4/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f" diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8011908aca..e07a76e997 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -9,8 +9,40 @@ if [ "$1" = 'postgres' ]; then sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf - { echo; echo 'host all all 0.0.0.0/0 trust'; } >> "$PGDATA"/pg_hba.conf - + # check password first so we can ouptut 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. + Use "-e POSTGRES_PASSWORD=password" to set + it in "docker run". + **************************************************** + EOWARN + + pass= + authMethod=trust + fi + + : ${POSTGRES_USER:=postgres} + if [ "$POSTGRES_USER" = 'postgres' ]; then + op='ALTER' + else + op='CREATE' + gosu postgres postgres --single -E <<-EOSQL + CREATE DATABASE "$POSTGRES_USER" + EOSQL + fi + + gosu postgres postgres --single <<-EOSQL + $op USER "$POSTGRES_USER" WITH SUPERUSER $pass + EOSQL + { echo; echo "host all \"$POSTGRES_USER\" 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf + if [ -d /docker-entrypoint-initdb.d ]; then for f in /docker-entrypoint-initdb.d/*.sh; do [ -f "$f" ] && . "$f"