Checking if the Postgres service of a Docker container is ready

Published on 2020-08-30 • Modified on 2020-08-30

In this snippet, we will see how to wait for the Postgres service to be available before using it. It's to avoid the following kind of errors: An exception occurred in driver: SQLSTATE[08006] [7] server closed the connection unexpectedly. So, before using Doctrine, like creating the database and loading the fixtures, we will call the following bash script (On can name it wait-for-postgres.sh). It will run the pg_isready executable until it returns OK. Then the execution of the script will continue. In a makefile, it must be called just after the docker-composer up. Replace phpquiz-postgres by the name of your Docker container. I am using this in the phpquiz project, check out the public GitHub repository.


#!/bin/sh
# https://stackoverflow.com/q/46516584/633864
until docker container exec -it phpquiz-postgres pg_isready; do
    >&2 echo "Postgres is unavailable - waiting for it... 😴"
sleep 1
done

 More on Stackoverflow   Read the doc  More on the web  Random snippet