РЕДАКТИРАНЕ:
Никога не съм правил разработка на spring-boot, но грешката, която казвате, че се показва, може много добре да не е свързана с проблема с mongo. Ето обаче обяснение защо вашата mongo-връзка е неуспешна:
docker-compose създава виртуална мрежа, ако такава не е посочена във файла (както във вашия случай).
Всички ваши приложения работят вътре в тази мрежа, напълно изолирани едно от друго. Като такъв, localhost във вашия spring-boot контейнер всъщност се отнася за себе си. Това означава, че приложението ви за пролетно стартиране очаква mongo екземпляр да се изпълнява вътре в своя контейнер (което не е, той е в различен контейнер).
Това би било добре, когато базата данни и приложението работят в мрежата на вашия лаптоп. Но както споменахме, те сега се изпълняват в docker-compose мрежа, в пълна изолация.
Въпреки това, docker-compose наистина е хитро! Той създава DNS за всеки от вашите контейнери, който използва името на услугата (във вашия случай mongo и spring ), посочени във вашия docker-compose файл, за да позволи лесен достъп до контейнерите вътре в мрежата.
Така че трябва да можете да промените spring.data.mongodb.uri=mongodb://localhost:27017/db до spring.data.mongodb.uri=mongodb://mongo:27017/db и това трябва да му позволи да се свърже.