Всеки контейнер в docker по подразбиране получава собствено име на хост и IP. Когато compose завърти контейнерите вместо вас, той също така поставя всички контейнери в мрежа по подразбиране, за да позволи откриване, базирано на DNS.
Това означава, че вашата база данни не е достъпна на localhost, но можете да стигнете до нея чрез името на услугата "db". Променете този ред във вашите settings.py:
'HOST': 'localhost',
до:
'HOST': 'db',