**Causa mais comum: hostname errado no código da aplicação
No Docker Compose, o serviço do banco está assim:
services:
postgres:
Isso significa que dentro da rede do Docker, o hostname do PostgreSQL NÃO é “localhost”, nem “127.0.0.1”.
**O hostname correto é: postgres
(exatamente o nome do serviço no docker-compose.yml)
Se no seu código Go você está usando algo como:
host=localhost
Ou: dsn := "host=127.0.0.1 user=... password=... dbname=..."
A aplicação nunca vai conectar quando rodar dentro do contêiner, porque dentro dele, o PostgreSQL não está rodando na máquina local, mas sim em outro container.
Como corrigir
No seu código Go (provavelmente em database.go ou config.go), troque o host para: host=postgres
Exemplo:
dsn := "host=postgres user=postgres password=root dbname=postgres port=5432 sslmode=disable"
ou
connStr := fmt.Sprintf(
"host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",
"postgres", "5432", "postgres", "root", "postgres",
)
**Possível erro visto na imagem
A imagem mostra algo como:
panic: erro ao conectar com banco de dados
dial tcp 127.0.0.1:5432: connect: connection refused
Isso confirma que a sua aplicação está tentando conectar no 127.0.0.1
Mas deveria tentar conectar em postgres
Por isso o erro permanece mesmo baixando a pasta original do curso:
O erro não está no Docker, está no código, que você ainda não alterou.
Tenta isso, ainda não estou fazendo isso, mas vai ser a próxima coisa que farei.
Já tive um problema desse.
Qualquer coisa é só falar.