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/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"