45 lines
1.2 KiB
Bash
45 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
POSTGRES_USER="${POSTGRES_USER:-postgres}"
|
|
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-postgres}"
|
|
POSTGRES_DB="${POSTGRES_DB:-$POSTGRES_USER}"
|
|
export PGDATA="${PGDATA:-/var/lib/postgresql/data}"
|
|
|
|
mkdir -p /tmp
|
|
LOG_PIPE="$(mktemp -u)"
|
|
mkfifo "$LOG_PIPE"
|
|
|
|
(
|
|
while IFS= read -r line; do
|
|
if echo "$line" | grep -qEi "ERROR|FATAL|PANIC"; then
|
|
echo "$line" >&2
|
|
else
|
|
echo "$line"
|
|
fi
|
|
done < "$LOG_PIPE"
|
|
) &
|
|
|
|
if [ ! -s "$PGDATA/PG_VERSION" ]; then
|
|
tmpfile=$(mktemp)
|
|
printf "%s\n" "$POSTGRES_PASSWORD" > "$tmpfile"
|
|
initdb --username="$POSTGRES_USER" --pwfile="$tmpfile"
|
|
rm -f "$tmpfile"
|
|
|
|
auth_method=$(postgres -c config_file="/etc/postgresql/postgresql.conf" -C password_encryption)
|
|
POSTGRES_HOST_AUTH_METHOD="${POSTGRES_HOST_AUTH_METHOD:=$auth_method}"
|
|
printf "\nhost all all all %s\n" "$POSTGRES_HOST_AUTH_METHOD" >> "$PGDATA/pg_hba.conf"
|
|
|
|
pg_ctl -w start
|
|
|
|
if ! psql --username="$POSTGRES_USER" -d postgres -tc "SELECT 1 FROM pg_database WHERE datname = '$POSTGRES_DB'" | grep -q 1; then
|
|
psql --username="$POSTGRES_USER" -d postgres -c "CREATE DATABASE \"$POSTGRES_DB\";"
|
|
fi
|
|
|
|
pg_ctl -m fast -w stop
|
|
fi
|
|
|
|
exec postgres -c config_file="/etc/postgresql/postgresql.conf" "$@" > "$LOG_PIPE" 2>&1
|