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