Twój DATABASE_URL odnosi się do 127.0.0.1 , który jest adapterem pętli zwrotnej (więcej tutaj). Oznacza to „połącz się ze sobą”.
Podczas uruchamiania obu aplikacji (bez użycia platformy Docker) na tym samym hoście, obie są adresowalne na tym samym adapterze (znanym również jako localhost ).
Podczas uruchamiania obu aplikacji w kontenerach nie oba znajdują się na hoście lokalnym, jak wcześniej. Zamiast tego musisz wskazać web kontener do db adres IP kontenera w docker0 adapter - który docker-compose zestawy dla Ciebie.
Zmień:
127.0.0.1 do CONTAINER_NAME (np. db )
Przykład:
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
do
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
Działa to dzięki linkom Dockera:web kontener zawiera plik (/etc/hosts ) z db wpis wskazujący adres IP, który db pojemnik jest włączony. Jest to pierwsze miejsce, w którym system (w tym przypadku kontener) będzie szukał podczas rozwiązywania nazw hostów.