3
respostas

Mais um erro ao conectar com o banco de dados.

Mais um erro... Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Tentei corrigir de todas as formas, mas não estou conseguindo rodar a aplicação. Meu arquivo docker-compose.yml:

 postgres:
    image: "postgres"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=root
    volumes:
      - /postgres-data:/var/lib/postgresql/data

Podem me ajudar com isso?

3 respostas

Olá, Murillo.

Tudo bem?

Eu fiz o teste aqui e funcionaou normalmente. Verifica se os container estão rodando corretamente no Docker, principalmente o Postgres:

Print do Docker mostrando o container do curso incluindo o banco postgres e o pgadmin

Vou deixar o meu docker-compose.yml caso queira comparar:

version: '3'
services:
  postgres:
    image: "postgres"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=root      
    ports:
      - "5432:5432"
    volumes:
      - /postgres-data:/var/lib/postgresql/data  

  pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "gui@alura.com"
      PGADMIN_DEFAULT_PASSWORD: "123456"
    ports:
      - "54321:80"
    depends_on:
      - postgres

Sugiro que faça o processo novamente, abra o Docker e exclua o container do curso que é o "projeto-go-testes-main", rode o comando novamente:

   docker-compose up

Depois:

go run main.go

Espero que essas dicas ajudem a resolver o problema. Qualquer coisa manda aqui de novo. Bons estudos!

Oi Murillo,

Tive o mesmo problema por aqui e fiquei um tempo presa nisso, tentei algumas sugestões que vi aqui do fórum e a maioria não funcionou, a única sugestão que funcionou pra mim foi alterar a porta do Postgres tanto no arquivo docker-compose.yml quanto no arquivo de conexão com banco db.go.

Meu docker-compose.yml ficou assim:

(veja que no ports ficou "5433:5432")


version: '3'
services:
  postgres:
    image: "postgres"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=root      
    ports:
      - "5433:5432"
    volumes:
      - /postgres-data:/var/lib/postgresql/data  

  pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "gui@alura.com"
      PGADMIN_DEFAULT_PASSWORD: "123456"
    ports:
      - "54321:80"
    depends_on:
      - postgres

Depois alterei também o arquivo db.go que esta localizado dentro da pasta database. Nesse arquivo tem a função que faz a conexão com o banco e na linha 17 menciona a porta que mudei também, coloquei port:5433.

Meu db.go ficou assim:

package database

import (
    "log"

    "github.com/guilhermeonrails/api-go-gin/models"
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

var (
    DB  *gorm.DB
    err error
)

func ConectaComBancoDeDados() {
    stringDeConexao := "host=localhost user=root password=root dbname=root port=5433 sslmode=disable"
    DB, err = gorm.Open(postgres.Open(stringDeConexao))
    if err != nil {
        log.Panic("Erro ao conectar com banco de dados")
    }

    DB.AutoMigrate(&models.Aluno{})
}

Pra mim funcionou, se quiser tentar altera os arquivos, salva as alterações e depois é só restartar o docker-compose pra ele pegar as alterações rodando:

docker-compose down

e na sequência subir novamente com:

docker-compose up -d

e o

go run main.go

Ainda não sei o porque dele não rodar com a porta padrão do Postgres mas só de rodar ja fiquei feliz hahahaha.

Boa sorte ai !!!

Tive o mesmo problema, e vi que está ta dando erro no container do postgree por causa da versão diferente do server.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Passos pra resolver: Alterar o docker-compose.yml alterando a versão do postgres pra 14, pra ficar com a mesma versão do server:

version: "3"
services:
    postgres:
        image: "postgres:14"
        environment:
            - POSTGRES_USER=root
            - POSTGRES_PASSWORD=root
            - POSTGRES_DB=root
        ports:
            - "5432:5432"
        volumes:
            - ./postgres-data:/var/lib/postgresql/data

    pgadmin-compose:
        image: dpage/pgadmin4
        environment:
            PGADMIN_DEFAULT_EMAIL: "gui@alura.com"
            PGADMIN_DEFAULT_PASSWORD: "123456"
        ports:
            - "15632:80"
        depends_on:
            - postgres

Ainda tive um erro com a pasta de dados do postgres, provavelmente deu problema ao copiar os arquivos de um projeto pro outro (passo feito na primeira aula), então fiz o seguinte pra resolver:

1 - docker-compose down -v 2- Apaguei a pasta do postgres: rm -rf ./postgres-data 3 - docker-compose up

Voltou a funcionar normalmente.