2021-02-11 23:18:12 +01:00
|
|
|
#!/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}"
|
|
|
|
|
2021-02-16 19:28:30 +01:00
|
|
|
echo "psql at: ${DATABASE_URL}"
|
|
|
|
|
2021-02-11 23:18:12 +01:00
|
|
|
postgres_ready() {
|
|
|
|
python << END
|
|
|
|
import sys
|
|
|
|
|
2021-02-16 19:28:30 +01:00
|
|
|
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())
|
2021-02-11 23:18:12 +01:00
|
|
|
|
|
|
|
END
|
|
|
|
}
|
|
|
|
until postgres_ready; do
|
|
|
|
>&2 echo 'Waiting for PostgreSQL to become available...'
|
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
>&2 echo 'PostgreSQL is available'
|
|
|
|
|
|
|
|
exec "$@"
|