Din DATABASE_URL
hänvisar till 127.0.0.1
, som är loopback-adaptern (mer här). Detta betyder "anslut till mig själv".
När båda applikationerna körs (utan att använda Docker) på samma värd, är de båda adresserbara på samma adapter (även känd som localhost
).
När båda applikationerna körs i behållare är de inte båda på localhost som tidigare. Istället måste du peka på web
container till db
containerns IP-adress på docker0
adapter - som docker-compose
ställer åt dig.
Ändra:
127.0.0.1
till CONTAINER_NAME
(t.ex. db
)
Exempel:
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
till
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
Detta fungerar tack vare Docker-länkar:web
behållaren har en fil (/etc/hosts
) med en db
post som pekar på den IP som db
behållaren är på. Detta är det första stället ett system (i det här fallet behållaren) kommer att titta på när det försöker lösa värdnamn.