localhost в контейнере свой, отсюда и ошибка.
Вариант так себе, но рабочий - настрой сервис, который работает на хостовой машине, так, что бы он слушал на всех IP (возможно это уже сделано) и обращайся к нему из контейнера по IP шлюза (он доступен как с хостовой машины, так и из контейнера). IP шлюза - это тот, что назначен на докеровый бридж узнать можно командой:
docker inspect --format='{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' <container_name>
Для удобства можешь дать ему имя с помощью
extra_hosts: в docker-compose.yml
Хороший вариант - заверни сервис, который сейчас работает на хостовой машине, в контейнер и добавь его в этот же compose, тогда сможешь обращаться к нему по имени сервиса, ведь они будут работать в рамках одной виртуальной сети.
И плохой вариант убери изоляцию для сети, то есть
Use host networking. Директива
network_mode в docker-compose.yml