PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Docker-compose polega na tym, aby nie czekać, aż usługa zależna od usługi nie zostanie w pełni uruchomiona

Tak.

Po pierwsze, zdaj sobie sprawę, że depends-on jest prawie całkowicie bezużyteczny. Docker nie wie nic o Twojej aplikacji; nie ma możliwości stwierdzenia, że ​​serwer bazy danych nie jest w rzeczywistości gotowy do obsługi żądań.

Prawidłowym rozwiązaniem jest zakodowanie aplikacji w taki sposób, aby (a) ponawiała początkowe połączenie z bazą danych, dopóki nie będzie gotowe, oraz (b) ponownie nawiąże połączenie z bazą danych, jeśli połączenie się nie powiedzie. (a) rozwiązuje problem, o który pytasz, i (b) pozwala na ponowne uruchomienie kontenera bazy danych niezależnie od kontenera aplikacji.

Jeśli nie kontrolujesz kodu w kontenerze aplikacji, możesz otoczyć swoje główne polecenie skryptem powłoki, który robi coś takiego:

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

(Ustawianie odpowiednich opcji uwierzytelniania lub konfigurowanie .pgpass plik)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uzyskać byte[] z kolumny bytea z MyBatis?

  2. Błąd składni w miejscu lub w pobliżu WHERE

  3. PostgreSQL:różnica wydajności NIE W porównaniu z WYJĄTKIEM (edytowane nr 2)

  4. psycopg2 nie widzi mojej instancji PostgreSQL

  5. Jaka jest maksymalna wielkość partii JDBC?