PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Docker-compose dépend du fait de ne pas attendre que le service dépendant ne soit pas complètement démarré

Oui.

Tout d'abord, sachez que depends-on est presque entièrement inutile. Docker ne sait rien de votre application ; il n'a aucun moyen de savoir que votre serveur de base de données n'est pas réellement prêt à traiter les requêtes.

La solution correcte consiste à coder votre application de sorte que (a) elle réessaie la connexion initiale à la base de données jusqu'à ce qu'elle soit prête, et (b) elle se reconnecte à la base de données si la connexion échoue. (a) résout le problème que vous posez et (b) vous permet de redémarrer le conteneur de base de données indépendamment du conteneur d'application.

Si vous ne contrôlez pas le code dans votre conteneur d'application, vous pouvez envelopper votre commande principale avec un script shell qui fait quelque chose comme :

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

(Définition des options d'authentification appropriées ou configuration d'un .pgpass fichier)