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

ECONNREFUSED pour Postgres sur nodeJS avec dockers

Votre DATABASE_URL fait référence à 127.0.0.1 , qui est l'adaptateur de bouclage (plus ici). Cela signifie "se connecter à moi-même".

Lors de l'exécution des deux applications (sans utiliser Docker) sur le même hôte, elles sont toutes deux adressables sur le même adaptateur (également appelé localhost ).

Lors de l'exécution des deux applications dans des conteneurs, elles ne sont pas toutes les deux sur localhost comme auparavant. Au lieu de cela, vous devez pointer le web conteneur à la db l'adresse IP du conteneur sur le docker0 adaptateur - qui docker-compose ensembles pour vous.

Modifier :

127.0.0.1 vers CONTAINER_NAME (par exemple db )

Exemple :

DATABASE_URL: postgres://username:[email protected]:5432/mydatabase

à

DATABASE_URL: postgres://username:[email protected]:5432/mydatabase

Cela fonctionne grâce aux liens Docker :le web le conteneur a un fichier (/etc/hosts ) avec un db entrée pointant vers l'IP que la db le conteneur est activé. C'est le premier endroit qu'un système (dans ce cas, le conteneur) regardera lorsqu'il essaiera de résoudre les noms d'hôte.