#!/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