Il tuo DATABASE_URL
fa riferimento a 127.0.0.1
, che è l'adattatore di loopback (più qui). Questo significa "connettersi a me stesso".
Quando si eseguono entrambe le applicazioni (senza utilizzare Docker) sullo stesso host, sono entrambe indirizzabili sullo stesso adattatore (noto anche come localhost
).
Quando si eseguono entrambe le applicazioni nei contenitori, non si trovano entrambe su localhost come prima. Invece devi puntare il web
contenitore nel db
l'indirizzo IP del contenitore nella docker0
adapter - che docker-compose
imposta per te.
Modifica:
127.0.0.1
a CONTAINER_NAME
(es. db
)
Esempio:
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
a
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
Funziona grazie ai collegamenti Docker:il web
contenitore ha un file (/etc/hosts
) con un db
voce che punta all'IP che è il db
il contenitore è acceso. Questo è il primo posto in cui un sistema (in questo caso, il container) cercherà quando tenterà di risolvere i nomi host.