Pada skrip shell entrypoint gambar docker saya ingin menentukan apakah wadah postgresql dapat mendengarkan koneksi. Untuk mysql saya menggunakan cuplikan berikut:
while ! mysqladmin ping -h"$MOODLE_DB_HOST" -P $MOODLE_DB_PORT --silent; do echo "Connecting to ${MOODLE_DB_HOST} Failed" sleep 1done
Bagaimana Saya bisa mencapai yang serupa menggunakan postgresql?
Pada Dockerfile tambahkan:
RUN apt-get update && apt-get install -f -y postgresql-client
Kemudian pada skrip entrypoint gunakan:
while ! pg_isready -h ${MOODLE_DB_HOST} -p ${MOODLE_DB_PORT} > /dev/null 2> /dev/null; do echo "Connecting to ${MOODLE_DB_HOST} Failed" sleep 1 done
Pendekatan lain
Pendekatan lain adalah dengan menggunakan netcat:
for count in {1..100}; do echo "Pinging mysql database attempt "${count} if $(nc -z ${DB_HOST} ${DB_PORT}) ; then echo "Can connect into database" break fi sleep 5 done
Dimana variabel ${DB_HOST}
berisi database host sementara ${DB_PORT}
berisi port database. Thas bekerja pada sebagian besar database (kecuali jika Anda ingin mendeteksi jenisnya juga di mana skrip khusus diperlukan).