PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

ECONNREFUSED für Postgres auf nodeJS mit Dockern

Ihre DATABASE_URL bezieht sich auf 127.0.0.1 , das ist der Loopback-Adapter (mehr hier). Das bedeutet „mit mir selbst verbinden“.

Wenn beide Anwendungen (ohne Docker) auf demselben Host ausgeführt werden, sind beide auf demselben Adapter (auch bekannt als localhost) ansprechbar ).

Wenn beide Anwendungen in Containern ausgeführt werden, befinden sie sich nicht wie zuvor beide auf localhost. Stattdessen müssen Sie auf web zeigen Container in die db Container-IP-Adresse auf docker0 adapter - welcher docker-compose Sets für Sie.

Änderung:

127.0.0.1 an CONTAINER_NAME (zB db )

Beispiel:

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

zu

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

Das funktioniert dank Docker-Links:dem web Container hat eine Datei (/etc/hosts ) mit einem db Eintrag, der auf die IP zeigt, die db Behälter ist an. Dies ist der erste Ort, an dem ein System (in diesem Fall der Container) nachsieht, wenn es versucht, Hostnamen aufzulösen.