Din DATABASE_URL hänvisar till 127.0.0.1 , som är loopback-adaptern (mer här). Detta betyder "anslut till mig själv".
När båda applikationerna körs (utan att använda Docker) på samma värd, är de båda adresserbara på samma adapter (även känd som localhost ).
När båda applikationerna körs i behållare är de inte båda på localhost som tidigare. Istället måste du peka på web container till db containerns IP-adress på docker0 adapter - som docker-compose ställer åt dig.
Ändra:
127.0.0.1 till CONTAINER_NAME (t.ex. db )
Exempel:
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
till
DATABASE_URL: postgres://username:example@sqldat.com:5432/mydatabase
Detta fungerar tack vare Docker-länkar:web behållaren har en fil (/etc/hosts ) med en db post som pekar på den IP som db behållaren är på. Detta är det första stället ett system (i det här fallet behållaren) kommer att titta på när det försöker lösa värdnamn.