I am sure a lot of us have found ourselves in a situation where we need to wait for a service to be ready. I don’t mean the VM or container is running. I mean the service is up and running and fully functional.
Postgres provides an easy to use command called
pg_isready that allows us to know exactly when postgres is ready to accept connections.
pg_isready is a utility for checking the connection status of a PostgreSQL database server. The exit status specifies the result of the connection check. (taken from https://www.postgresql.org/docs/9.6/static/app-pg-isready.html)
Here is a simple shell script where we poll the postgres service every 2 seconds until it is ready to accept connections.
#!/bin/sh pg_uri="postgres://postgres:postgres@postgrest-host:5432/shield" # make sure pg is ready to accept connections until pg_isready -h postgres-host -p 5432 -U postgres do echo "Waiting for postgres at: $pg_uri" sleep 2; done # Now able to connect to postgres