2
respostas

[Dúvida] NÃO CONSIGO CRIAR SERVIDOR NO POSTGRES COM DOCKER

Seguindo os passos da aula 4 do capitulo 2 do curso GO DESENVOLVENDO API REST, todos funcionam até certo ponto, quando vou tentar criar um novo servidor no postgres ele pede o Host name/address:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Então pra pegar o endereço sigo o passo da aula de usar $ docker-compose exec postgres sh mas recebo como resposta no terminal service "postgres" is not running. Tento então o segundo argumento passado na aula $ docker inspect b1a | grep IPAddress mas ele retorna que esse termo grep não é reconhecido. Utilizando apenas o $ docker inspect b1a consigo ter o retorno do "IPAddress": "172.18.0.3", assim preencho o Host name/address e os demais campos de acordo com o arquivo docker-compose.yml passado também no curso, mas quando clico para salvar o servidor aparece a informação "Unable to connect to server: connection failed: Connection refused Is the server running on that host and accepting TCP/IP connections?" conforme a imagem:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Pesquisei no forum aqui da alura e no stackoverflow mas sem sucesso para achar uma solução. Em uma das respostas aqui forum inclusive alguém comentou sobre remover a pasta de data do Postgres, o fiz mas ainda assim sem sucesso. Queria saber o que posso fazer nessa situação para criar o servidor e continuar o curso.

O arquivo docker-compose.yml que usei:

version: '3'
services:
  postgres:
    image: "postgres"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=root      
    ports:
      - "5432:5432"
    volumes:
      - ./migration/docker-database-initial.sql:/docker-entrypoint-initdb.d/docker-database-initial.sql   

  pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "andreysgd@gmail.com"
      PGADMIN_DEFAULT_PASSWORD: "123456"
    ports:
      - "54321:80"
    depends_on:
      - postgres
2 respostas

Percebi que consigo subir o IMAGE do pgadmin4, mas não cria o do postgres também. Logo percebi que o ID que eu estava usando pra tentar achar o Host name/address era o do pgadmin e não o do postgres já que o IMAGE dele não foi criado e provavelmente por isso eu recebo a mensagem service "postgres" is not running no terminal quando coloco e consequentemente não estava usando o ID correto no $ docker inspect já que estava colocando o ID do pgadmin4 em vez do ID do postgres. Na imagem, usando $ docker ps dá pra ver que só é criado o pgadmin4:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Conferi o go.mod e executei os dois go get pedidos na aula $ go get gorm.io/driver/postgres e $ go get gorm.io/gorm v1.21.16 e fiquei com o seguinte arquivo go.mod após usar $ go mod tidy

module api-rest

go 1.21.0

require (
    github.com/gorilla/mux v1.8.0
    gorm.io/driver/postgres v1.5.2
    gorm.io/gorm v1.25.4
)

require (
    github.com/jackc/pgpassfile v1.0.0 // indirect
    github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
    github.com/jackc/pgx/v5 v5.4.3 // indirect
    github.com/jinzhu/inflection v1.0.0 // indirect
    github.com/jinzhu/now v1.1.5 // indirect
    golang.org/x/crypto v0.12.0 // indirect
    golang.org/x/text v0.12.0 // indirect
)

Está um pouco diferente do go.mod do professor, que é bem mais suscinto, não sei se isso influencia em algo. O go.mod do professor é assim:

module github.com/guilhermeonrails/go-rest-api

go 1.15

require (
    github.com/gorilla/mux v1.8.0
    gorm.io/driver/postgres v1.1.2
    gorm.io/gorm v1.21.16 // indirect
)

De qualquer forma, continuo com o mesmo problema, não consigo criar o Server no pgadmin4.

Ao invés de fornecer o endereço ip como você tentou, experimente apenas utilizar localhost como host.