58 lines
No EOL
1.5 KiB
Bash
Executable file
58 lines
No EOL
1.5 KiB
Bash
Executable file
#!/bin/sh
|
|
chown -R postgres "$PGDATA"
|
|
if [ -z "$(ls -A "$PGDATA")" ]; then
|
|
gosu postgres initdb
|
|
sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf
|
|
|
|
: ${POSTGRES_USER:="postgres"}
|
|
: ${POSTGRES_DB:=$POSTGRES_USER}
|
|
|
|
if [ "$POSTGRES_PASSWORD" ]; then
|
|
pass="PASSWORD '$POSTGRES_PASSWORD'"
|
|
authMethod=md5
|
|
else
|
|
echo "==============================="
|
|
echo "!!! NO PASSWORD SET !!! (Use \$POSTGRES_PASSWORD env var)"
|
|
echo "==============================="
|
|
pass=
|
|
authMethod=trust
|
|
fi
|
|
echo
|
|
|
|
|
|
if [ "$POSTGRES_DB" != 'postgres' ]; then
|
|
createSql="CREATE DATABASE $POSTGRES_DB;"
|
|
echo $createSql | gosu postgres postgres --single -jE
|
|
echo
|
|
fi
|
|
|
|
if [ "$POSTGRES_USER" != 'postgres' ]; then
|
|
op=CREATE
|
|
else
|
|
op=ALTER
|
|
fi
|
|
|
|
userSql="$op USER $POSTGRES_USER WITH SUPERUSER $pass;"
|
|
echo $userSql | gosu postgres postgres --single -jE
|
|
echo
|
|
|
|
gosu postgres pg_ctl -D "$PGDATA" \
|
|
-o "-c listen_addresses=''" \
|
|
-w start
|
|
|
|
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" ;;
|
|
esac
|
|
echo
|
|
done
|
|
|
|
gosu postgres pg_ctl -D "$PGDATA" -m fast -w stop
|
|
|
|
{ echo; echo "host all all 0.0.0.0/0 $authMethod"; } >> "$PGDATA"/pg_hba.conf
|
|
fi
|
|
|
|
exec gosu postgres postgres |