Su DATABASE_URL
se refiere a 127.0.0.1
, que es el adaptador de bucle invertido (más aquí). Esto significa "conectar conmigo mismo".
Cuando se ejecutan ambas aplicaciones (sin usar Docker) en el mismo host, ambas son direccionables en el mismo adaptador (también conocido como localhost
). ).
Cuando se ejecutan ambas aplicaciones en contenedores, no están ambas en localhost como antes. En su lugar, debe señalar la web
contenedor a la db
dirección IP del contenedor en docker0
adaptador - que docker-compose
conjuntos para usted.
Cambiar:
127.0.0.1
a CONTAINER_NAME
(por ejemplo, db
)
Ejemplo:
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
a
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
Esto funciona gracias a los enlaces de Docker:la web
contenedor tiene un archivo (/etc/hosts
) con una db
entrada que apunta a la IP que el db
el contenedor está encendido. Este es el primer lugar donde un sistema (en este caso, el contenedor) buscará cuando intente resolver nombres de host.