#!/bin/sh timeout=120 start="$(date +%s)" while true; do if err=$(echo "SELECT 1;" | psql 2>&1 >/dev/null); then break fi now=$(date +%s) if ! [ "$err" = "psql: FATAL: the database system is starting up" ]; then echo "postgres connection error:" \ "Could not connect to '$PGHOST'. (will retry)" if [ "$err" ]; then echo " Error:" >&2 printf "%s\n" "$err" | sed -r "s/^/ ! /g" >&2 fi else echo "Got 'database system is starting up' error... waiting before launching npm start" >&2 fi elapsed=$((now - start)) if [ "$elapsed" -gt "$timeout" ]; then echo "postgre connection error:"\ "Could not connect to db on '$PGHOST'" \ "container's IP." exit 1 fi sleep 0.5 done exec npm start