Ogni container ha la propria interfaccia di rete con il proprio localhost. Quindi cambia il modo in cui Java punta a Postgres:
spring.datasource.url=jdbc:postgresql://localhost:5432/sample
A:
spring.datasource.url=jdbc:postgresql://db:5432/sample
db
si risolverà nell'IP Postgres corretto.
Bonus. Con docker-compose non hai bisogno di costruire la tua immagine a mano. Quindi cambia:
web:
image: myuser/manager:latest
A:
web:
build: .