Files
nix/packages/docker/postgresql/entrypoint.sh
Nikolaos Karaolidis aca10fdc66 Cleanup
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-06-25 23:03:12 +01:00

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