1
resposta

Erro ao acessar o container postgres

Boa noite, pessoal! Voces sabem como resovler o problema abaixo? O erro ocorre quando eu tento acessar o psql do container baseado no postgres a partir do arquivo Dockerfile ?

"psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? /"

Dockefile:

FROM postgres:12

ENV POSTGRES_USER=postgres \

POSTGRES_PASSWORD=123456 \

POSTGRES_DB=postgres

VOLUME /var/lib/postgresql/data

COPY ./scripts/init.sql /docker-entrypoint-initdb.d/init.sql

EXPOSE 5432

Comando para criar a imagem a partir do Dockerfile:

docker image build -t post-dock-img .

Comando para criar o container a partir da imagem criada (post-dock-image):

docker container run -it --name post-dockcont -p 4040:5432 post-dock-img /bin/bash

Erro ao tentar acessar psql, perceba que eu consigo entrar no container mas nao consigo acessar o psql:

root@5a476bede994:/# psql -U postgres -d postgres

psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? //<========== ERRO AO TENTAR ACESSAR O PSQL

script:

create database email_sender;

\c email_sender

create table emails (

id serial not null,

data timestamp not null default current_timestamp,

assunto varchar(100) not null,

mensagem varchar(250) not null

);

1 resposta

Olá, Marcos. Tudo bem?

O problema é que você está iniciando o container passando que o primeiro comando a ser executado deve ser o /bin/bash. Dessa forma o comando padrão que o container executa, ou seja, a inicialização do PostgreSQL, não é executado.

Ao invés disso, execute primeiro o container sem passar um comando de inicio e usando a opção -dpara que ele devolva o terminal para você:

docker container run -it --name post-dockcont -p 4040:5432 -d post-dock-img

Depois execute o docker ps e pegue o ID do container e acesse o shell do container com:

docker exec -it id-do-seu-container /bin/bash

E aí sim tente acessar o postgres com o psql.

Eu realizei o teste com as configurações que você passou e funcionou direitinho, só deu problema tentando passar o comando de inicialização diferente do padrão.

Espero ter ajudado.