sql >> Base de Datos >  >> RDS >> PostgreSQL

Docker-compose depende de no esperar hasta que el servicio dependiente no esté completamente iniciado

Sí.

Primero, date cuenta de que depends-on es casi completamente inútil. Docker no sabe nada sobre su aplicación; no tiene forma de saber que su servidor de base de datos no está realmente listo para atender las solicitudes.

La solución correcta es codificar su aplicación para que (a) vuelva a intentar la conexión inicial de la base de datos hasta que esté lista y (b) se vuelva a conectar a la base de datos si la conexión falla. (a) resuelve el problema sobre el que está preguntando y (b) le permite reiniciar el contenedor de la base de datos independientemente del contenedor de la aplicación.

Si no controla el código en el contenedor de su aplicación, puede envolver su comando principal con un script de shell que hace algo como:

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

(Configurando las opciones de autenticación apropiadas o configurando un .pgpass archivo)