Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Projeto] docker compose up OK! Mas não consigo abrir http://localhost:8080/alunos

Senhores, uma ajuda necessária! Segui todos os passos à risca neste início do curso! Docker compose up -d funciona perfeitamente! VsCode mostra: Your application running on port 8080 is available, porém o web browser não consegue abrir. O navegador Firefox ou o Chrome relata:

- A conexão foi reiniciada. A conexão com o servidor foi reiniciada durante o carregamento da página. 

Não mostra, portanto, ou o [ ] ou o olá Vinicius!

Não foi tocada nenhuma linha do código. Este erro aparece no 1º exercício!

docker compose logs -f app relata:

app-1 | go: downloading github.com/gin-gonic/gin v1.7.7
app-1 | go: downloading gorm.io/gorm v1.22.4
app-1 | go: downloading gorm.io/driver/postgres v1.2.3
app-1 | go: downloading gopkg.in/validator.v2 v2.0.0-20210331031555-b37d688a7fb0
app-1 | go: downloading github.com/jackc/pgx/v4 v4.14.0
app-1 | go: downloading github.com/jinzhu/now v1.1.4
app-1 | go: downloading github.com/jinzhu/inflection v1.0.0
app-1 | go: downloading github.com/go-playground/validator/v10 v10.9.0
app-1 | go: downloading github.com/gin-contrib/sse v0.1.0
app-1 | go: downloading github.com/ugorji/go/codec v1.2.6
app-1 | go: downloading github.com/golang/protobuf v1.5.2
app-1 | go: downloading github.com/mattn/go-isatty v0.0.14
app-1 | go: downloading gopkg.in/yaml.v2 v2.4.0
app-1 | go: downloading github.com/jackc/pgconn v1.10.1
app-1 | go: downloading github.com/jackc/pgio v1.0.0
app-1 | go: downloading github.com/jackc/pgproto3/v2 v2.2.0
app-1 | go: downloading github.com/jackc/pgtype v1.9.0
app-1 | go: downloading golang.org/x/sys v0.0.0-20211205182925-97ca703d548d
app-1 | go: downloading github.com/jackc/pgproto3 v1.1.0
app-1 | go: downloading golang.org/x/crypto v0.0.0-20211202192323-5770296d904e
app-1 | go: downloading github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b
app-1 | go: downloading github.com/jackc/pgpassfile v1.0.0
app-1 | go: downloading golang.org/x/text v0.3.7
app-1 | go: downloading github.com/jackc/chunkreader/v2 v2.0.1
app-1 | go: downloading google.golang.org/protobuf v1.27.1
app-1 | go: downloading github.com/ugorji/go v1.2.6
app-1 | go: downloading github.com/jackc/chunkreader v1.0.0
app-1 | go: downloading github.com/go-playground/universal-translator v0.18.0
app-1 | go: downloading github.com/leodido/go-urn v1.2.1
app-1 | go: downloading github.com/go-playground/locales v0.14.0
app-1 | 2025/10/29 18:34:06 Erro ao conectar com banco de dados
app-1 |
app-1 | 2025/10/29 18:34:06 /app/database/db.go:23
app-1 | [error] failed to initialize database, got error failed to connect to host=postgres user=root database=root: hostname resolving error (lookup postgres on 127.0.0.11:53: server misbehaving)
app-1 | panic: Erro ao conectar com banco de dados
app-1 |
app-1 | goroutine 1 [running]:
app-1 | log.Panic({0xc0004b9e70?, 0xc00006c018?, 0x0?})
app-1 | /usr/local/go/src/log/log.go:432 +0x5a
app-1 | github.com/guilhermeonrails/api-go-gin/database.ConectaComBancoDeDados()
app-1 | /app/database/db.go:25 +0x30c
app-1 | main.main()
app-1 | /app/main.go:9 +0xf
app-1 | exit status 2

docker compose logs -f postgres

postgres-1 | Error: in 18+, these Docker images are configured to store database data in a
postgres-1 | format which is compatible with "pg_ctlcluster" (specifically, using
postgres-1 | major-version-specific directory names). This better reflects how
postgres-1 | PostgreSQL itself works, and how upgrades are to be performed.
postgres-1 |
postgres-1 | See also https://github.com/docker-library/postgres/pull/1259
postgres-1 |
postgres-1 | Counter to that, there appears to be PostgreSQL data in:
postgres-1 | /var/lib/postgresql/data (unused mount/volume)
postgres-1 |
postgres-1 | This is usually the result of upgrading the Docker image without
postgres-1 | upgrading the underlying database using "pg_upgrade" (which requires both
postgres-1 | versions).
postgres-1 |
postgres-1 | The suggested container configuration for 18+ is to place a single mount
postgres-1 | at /var/lib/postgresql which will then place PostgreSQL data in a
postgres-1 | subdirectory, allowing usage of "pg_upgrade --link" without mount point
postgres-1 | boundary issues.
postgres-1 |
postgres-1 | See https://github.com/docker-library/postgres/issues/37 for a (long)
postgres-1 | discussion around this process, and suggestions for how to do so.

3 respostas
solução!

Olá José.
Tudo bem?
Vou tentar lhe ajudar com base na sua descrição.
Seu log principal mostra claramente o erro de conexão com o banco de dados:

failed to connect to host=postgres user=root database=root: hostname resolving error (lookup postgres on 127.0.0.11:53: server misbehaving)

Ou seja:
O container app tentou se conectar ao serviço postgres, mas não conseguiu resolver o hostname postgres.
Isso indica que o container postgres não está subindo corretamente e de fato o seu log confirma isso.
O erro no container do Postgres:

There appears to be PostgreSQL data in: /var/lib/postgresql/data (unused mount/volume)

Esse erro é típico da mudança de estrutura nas versões 15 → 16 → 17 → 18 das imagens oficiais do PostgreSQL.
Basicamente, o volume /var/lib/postgresql/data não é mais o local esperado e ele precisa ser montado em /var/lib/postgresql.
Solução passo a passo
Edite o docker-compose.yml.
No seu arquivo, deve haver algo parecido com isto:

services:
  postgres:
    image: postgres
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: root
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

Altere a linha do volume para o novo caminho esperado:

volumes:
  - ./postgres-data:/var/lib/postgresql

Pare e remova os containers antigos:

docker compose down -v

O -v remove também os volumes antigos (que estão corrompidos no formato antigo).
Isso apagará o banco de dados local.
Suba novamente:

docker compose up -d

Verifique se os containers estão rodando corretamente:

docker ps

Você deve ver algo como:

CONTAINER ID   IMAGE       COMMAND                  PORTS                    NAMES
abcd1234       api-go-gin  "./main"                 0.0.0.0:8080->8080/tcp   app-1
efgh5678       postgres    "docker-entrypoint.s…"   5432/tcp                 postgres-1

E o log do app deve mostrar:

Conectado com sucesso ao banco de dados!

Teste novamente no navegador.
Acesse:
http://localhost:8080/alunos
Você deve ver a resposta esperada ([] ou "olá Vinicius!" dependendo do código).
Faça os testes ai e me envie um feedback.
Bons estudos.

Caro Ronaldo,

Muitíssimo obrigado pela ajuda! Sua solução foi na "mosca"! Removi as imagens antigas, ajustei o Docker-compose.yml e o sistema funcionou! Reitero meus agradecimentos. Sucesso para você!

Olá amigo.
Fico feliz que tenha dado certo.
Agradeço seu feedback.
Muito sucesso pra voce também.
Até...