Ya.
Pertama, sadari bahwa depends-on
hampir seluruhnya tidak berguna. Docker tidak tahu apa-apa tentang aplikasi Anda; tidak ada cara untuk mengetahui bahwa server database Anda sebenarnya tidak siap untuk melayani permintaan.
Solusi yang benar adalah mengkodekan aplikasi Anda sehingga (a) ia akan mencoba kembali koneksi database awal hingga siap, dan (b) akan menyambung kembali ke database jika koneksi gagal. (a) memecahkan masalah yang Anda tanyakan, dan (b) memungkinkan Anda untuk memulai ulang wadah basis data secara terpisah dari wadah aplikasi.
Jika Anda tidak mengontrol kode dalam wadah aplikasi Anda, Anda dapat membungkus perintah utama Anda dengan skrip shell yang melakukan sesuatu seperti:
while ! psql -c 'select 1'; do
sleep 1
done
(Menyetel opsi autentikasi yang sesuai atau menyiapkan .pgpass
berkas)