#!/bin/bash set -o errexit set -o pipefail set -o nounset if [ -z "${POSTGRES_USER}" ]; then base_postgres_image_default_user='postgres' export POSTGRES_USER="${base_postgres_image_default_user}" fi export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}" echo "psql at: ${DATABASE_URL}" postgres_ready() { python << END import sys import asyncpg import asyncio async def main(): try: conn = await asyncpg.connect('postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}') except Exception: sys.exit(-1) await conn.close() sys.exit(0) asyncio.get_event_loop().run_until_complete(main()) END } until postgres_ready; do >&2 echo 'Waiting for PostgreSQL to become available...' sleep 1 done >&2 echo 'PostgreSQL is available' exec "$@"