Почему Docker контейнер не видит PostgreSQL?
С чем может быть связана такая ошибка?
С тем, что твой скрипт запускается быстрее базы. depends докера работает крайне примитивно и правильно: если контейнер запущен, значит зависимость резолвится. Но в запущеном контейнере далеко не факт, что база данных запустилась. Между этими двумя событиями может пройти много времени — несколько секунд.

Для начала сделай в скрипте sleep(10). Если это поможет, то вот решение
Чтобы обращаться через db нужно объединить контейнеры в одну сеть