Хитрость в том, чтобы использовать docker -композицию. Поместите изображение вашего приложения в качестве одного сервиса и ваше изображение postgres в качестве второго сервиса. Затем также включите оверлейную сеть в стек и укажите это в каждой из ваших служб. После этого приложение может получить доступ к базе данных через имя службы docker "local_ postgres" в качестве имени хоста.
Обновление согласно вашему комментарию
Убедитесь, что ваш файл Docker, определяющий контейнер postgres, содержит команду EXPOSE.
EXPOSE 5432
Если отсутствует, добавьте его и перестройте контейнер.
Запустите контейнер и включите опция ниже, которая выставит порт базы данных на localhost.
docker run --name local_postgres -p 5432:5432 -d -P postgres
Проверьте, действительно ли порт открыт, набрав
docker ps | grep 'local_postgres'
Вы должны увидеть что-то подобное в выходных данных.
PORTS 0.0.0.0:5432->5432/tcp
Если вы видите этот вывод, порт 5432 успешно открыт на вашем хосте. Поэтому, если ваше приложение работает на локальном хосте, вы можете получить доступ к базе данных через локальный хост: 5432