I have a Kong API Gateway container and a postgres container and I need to check whether postgres has started up and ready from the Kong container before running the migrations. I was thinking of installing the postgres client utilities into a custom image based on the official Kong image using RUN yum install postgresql -y && yum clean all
in my Dockerfile and using either psql
or pg_isready
to achieve this. I've created a postgres user called polling
with an empty password specifically for checking the status of the server by these two utilities. Neither of them work.
I tried to execute these commands from the custom Kong image:
psql. The command psql -h postgres -U polling -w -c '\l'
fails with the error psql: fe_sendauth: no password supplied
. But the user has no password. What am I doing wrong? The full shell script checking whether the server is ready using psql is described here.
pg_isready. I don't get how to install this utility separately into a custom image based on the official Kong image which in turn based on the centos:7
image, the postgresql
package doesn't include pg_isready
. Only these utilities are installed and can be found in /usr/bin
: pg_config
, pg_dump
, pg_dumpall
, pg_restore
, psql
. How to install pg_isready
? I don't want to have the full server installation in the Kong image.
Here is a shell one liner using pg_isready
tool provided by PostgreSQL.
To call outside docker:
timeout 90s bash -c 'until docker exec $YOUR_DOCKER_CONTAINER_NAME pg_isready ; do sleep 5 ; done'