sql >> Databáze >  >> RDS >> PostgreSQL

Docker-compose závisí na nečekání, dokud nebude služba závislá na úplném spuštění

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)




  1. Nainstalujte PostgreSQL na Ubuntu 20.04

  2. Jak používat MySQL ve WSL (podsystém Windows pro Linux)?

  3. Jak provést vícesloupcové fulltextové vyhledávání v mysql, kde se shodují dílčí slova

  4. Jak definovat Oracle Package Procedure v H2 pro testování