Votre DATABASE_URL
fait référence à 127.0.0.1
, qui est l'adaptateur de bouclage (plus ici). Cela signifie "se connecter à moi-même".
Lors de l'exécution des deux applications (sans utiliser Docker) sur le même hôte, elles sont toutes deux adressables sur le même adaptateur (également appelé localhost
).
Lors de l'exécution des deux applications dans des conteneurs, elles ne sont pas toutes les deux sur localhost comme auparavant. Au lieu de cela, vous devez pointer le web
conteneur à la db
l'adresse IP du conteneur sur le docker0
adaptateur - qui docker-compose
ensembles pour vous.
Modifier :
127.0.0.1
vers CONTAINER_NAME
(par exemple db
)
Exemple :
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
à
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
Cela fonctionne grâce aux liens Docker :le web
le conteneur a un fichier (/etc/hosts
) avec un db
entrée pointant vers l'IP que la db
le conteneur est activé. C'est le premier endroit qu'un système (dans ce cas, le conteneur) regardera lorsqu'il essaiera de résoudre les noms d'hôte.