Din DATABASE_URL henviser til 127.0.0.1 , som er loopback-adapteren (mere her). Dette betyder "opret forbindelse til mig selv".
Når du kører begge applikationer (uden at bruge Docker) på den samme vært, kan de begge adresseres på den samme adapter (også kendt som localhost ).
Når du kører begge applikationer i containere, er de ikke begge på localhost som før. I stedet skal du pege på web container til db containerens IP-adresse på docker0 adapter - som docker-compose sæt til dig.
Skift:
127.0.0.1 til CONTAINER_NAME (f.eks. db )
Eksempel:
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
til
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
Dette virker takket være Docker-links:web container har en fil (/etc/hosts ) med en db indgang, der peger på den IP, som db beholderen er tændt. Dette er det første sted et system (i dette tilfælde containeren) vil se hen, når det forsøger at løse værtsnavne.