Ano.
Nejprve si uvědomte, že depends-on
je téměř úplně k ničemu. Docker o vaší aplikaci nic neví; nemá žádný způsob, jak zjistit, že váš databázový server není ve skutečnosti připraven obsluhovat požadavky.
Správným řešením je nakódovat aplikaci tak, aby (a) opakovala počáteční připojení k databázi, dokud nebude připravena, a (b) aby se znovu připojila k databázi, pokud by připojení selhalo. (a) řeší problém, na který se ptáte, a (b) umožňuje restartovat databázový kontejner nezávisle na aplikačním kontejneru.
Pokud neovládáte kód v kontejneru aplikace, můžete hlavní příkaz zabalit do skriptu shellu, který dělá něco jako:
while ! psql -c 'select 1'; do
sleep 1
done
(Nastavení vhodných možností ověřování nebo nastavení .pgpass
soubor)