1
0
mirror of https://github.com/docker-library/postgres.git synced 2025-11-17 13:02:40 +03:00

Sync a bit more with the Debian configure flags (adding comments for where we differ) and add all versions (including "update.sh" and "generate-stackbrew-library.sh" changes, with our new template)

This commit is contained in:
Tianon Gravi
2016-11-03 14:13:52 -07:00
parent 688e034f83
commit a9c1b15a7a
15 changed files with 1123 additions and 50 deletions

View File

@@ -1,21 +1,22 @@
#!/bin/sh -e
#!/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:0:1}" = '-' ]; then
set -- postgres "$@"
fi
if [ "$1" = 'postgres' ]; then
mkdir -p "$PGDATA"
chmod 700 "$PGDATA"
chown -R postgres "$PGDATA"
chmod g+s /var/run/postgresql
chown -R postgres /var/run/postgresql
mkdir -p /run/postgresql
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
su-exec postgres initdb
eval "su-exec postgres initdb $POSTGRES_INITDB_ARGS"
# check password first so we can output the warning before postgres
# messes it up
@@ -42,20 +43,22 @@ if [ "$1" = 'postgres' ]; then
authMethod=trust
fi
{ echo; echo "host all all 0.0.0.0/0 $authMethod"; } >> "$PGDATA/pg_hba.conf"
{ echo; echo "host all all 0.0.0.0/0 $authMethod"; } | su-exec postgres tee -a "$PGDATA/pg_hba.conf" > /dev/null
# internal start of server in order to allow set-up using psql-client
# does not listen on TCP/IP and waits until start finishes
# does not listen on external TCP/IP and waits until start finishes
su-exec postgres pg_ctl -D "$PGDATA" \
-o "-c listen_addresses=''" \
-o "-c listen_addresses='localhost'" \
-w start
: ${POSTGRES_USER:=postgres}
: ${POSTGRES_DB:=$POSTGRES_USER}
export POSTGRES_USER POSTGRES_DB
psql=( psql -v ON_ERROR_STOP=1 )
if [ "$POSTGRES_DB" != 'postgres' ]; then
psql --username postgres <<-EOSQL
"${psql[@]}" --username postgres <<-EOSQL
CREATE DATABASE "$POSTGRES_DB" ;
EOSQL
echo
@@ -66,24 +69,25 @@ if [ "$1" = 'postgres' ]; then
else
op='CREATE'
fi
psql --username postgres <<-EOSQL
"${psql[@]}" --username postgres <<-EOSQL
$op USER "$POSTGRES_USER" WITH SUPERUSER $pass ;
EOSQL
echo
psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )
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_USER" --dbname "$POSTGRES_DB" < "$f" && echo ;;
*) echo "$0: ignoring $f" ;;
*.sh) echo "$0: running $f"; . "$f" ;;
*.sql) echo "$0: running $f"; "${psql[@]}" < "$f"; echo ;;
*.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${psql[@]}"; echo ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
su-exec postgres pg_ctl -D "$PGDATA" -m fast -w stop
set_listen_addresses '*'
echo
echo 'PostgreSQL init process complete; ready for start up.'