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:[email protected]:5432/mydatabase
naar
DATABASE_URL: postgres://username:[email protected]: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.