O problema está no endereço do banco localhost, o docker roda como se fosse outra máquina, logo o localhost de dentro do docker estará apontando para ele mesmo.
na aula isso funciona pq ele está usando o H2 que é um banco em memória (ou seja dentro do próprio docker da aplicação ele irá conseguir usar o H2), já você está usando o postgres, por isso não funciona
aqui eu tenho um exemplo de uma aplicação spring rodando com docker/docker-compose utilizando o postgres
https://bitbucket.org/erico_monteiro/commons-api/
repare na configuração do bando dessa aplicação de exemplo:
https://bitbucket.org/erico_monteiro/commons-api/src/master/src/main/resources/application.properties
spring.datasource.url=jdbc:postgresql://postgres-compose:5432/commons
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
spring.jpa.show-sql=true
Como eu estou utilizando o banco de dados também em docker no host da url é informado o nome do service do docker-compose
https://bitbucket.org/erico_monteiro/commons-api/src/master/src/main/docker/docker-compose.yml
version: '3.1'
services:
commons-api-compose:
image: ericoh/commons-api:0.0.1
ports:
- "18080:8080"
networks:
- commons-api
depends_on:
- postgres-compose
- pgadmin-compose
postgres-compose:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: "postgres"
POSTGRES_DB: "commons"
ports:
- "15432:5432"
networks:
- commons-api
pgadmin-compose:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: "pgadmin"
PGADMIN_DEFAULT_PASSWORD: "pgadmin"
ports:
- "15433:80"
depends_on:
- postgres-compose
networks:
- commons-api
networks:
commons-api:
driver: bridge