Uw DATABASE_URL verwijst naar 127.0.0.1 , wat de loopback-adapter is (meer hier). Dit betekent "verbinden met mezelf".
Wanneer beide applicaties (zonder Docker te gebruiken) op dezelfde host worden uitgevoerd, zijn ze beide adresseerbaar op dezelfde adapter (ook bekend als localhost ).
Wanneer beide applicaties in containers worden uitgevoerd, zijn ze niet allebei op localhost zoals voorheen. In plaats daarvan moet je naar het web . wijzen container naar de db het IP-adres van de container op de docker0 adapter - welke docker-compose sets voor u.
Wijzigen:
127.0.0.1 naar CONTAINER_NAME (bijv. db )
Voorbeeld:
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
naar
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
Dit werkt dankzij Docker-links:het web container heeft een bestand (/etc/hosts ) met een db ingang die verwijst naar het IP dat de db container staat aan. Dit is de eerste plaats waar een systeem (in dit geval de container) zal kijken bij het oplossen van hostnamen.