PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Docker-compose dipende dal non attendere fino a quando il servizio dipendente non è completamente avviato

Sì.

Innanzitutto, renditi conto che depends-on è quasi del tutto inutile. Docker non sa nulla della tua applicazione; non ha modo di dire che il tuo server di database non è effettivamente pronto per soddisfare le richieste.

La soluzione corretta è codificare l'applicazione in modo che (a) riprovi la connessione iniziale al database finché non è pronta e (b) si riconnetta al database se la connessione non riesce. (a) risolve il problema che stai chiedendo e (b) ti consente di riavviare il contenitore del database indipendentemente dal contenitore dell'applicazione.

Se non controlli il codice nel contenitore dell'applicazione, puoi racchiudere il tuo comando principale con uno script di shell che fa qualcosa del tipo:

while ! psql -c 'select 1'; do
  sleep 1
done

(Impostazione delle opzioni di autenticazione appropriate o configurazione di un .pgpass file)