Начнем с главного. Докер - это фактически виртуалка. А виртуалка - это фактически изолированный отдельный хост.
Если вы публикуете апку на контейнер с постгрей, то все ок - можно обращаться через локалхост. Если публикуете апку в отдельный контейнер, который вместе с постгрей поднимаете Докер Компоузером, то тоже все норм - главное в апке прописать название хоста, которое прописано для постгри в docker-compose.yml
А вот если вы с основной машины хотите стучаться в службу на виртуалке, как в службу на основном хосте, то вам нужно или делать
переброску портов, или зайти через консоль в контейнер, там проверить текущий айпишник, по которому будете стучаться с вашей IDE. У меня было так:
ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'