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.