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

Dúvida em relação a porta exposta no container

Boa tarde, fiquei com uma dúvida em relação a porta de acesso do container, criei um container do postgres expondo a porta 5440 do host apontando pra porta 5432, porém só consegui conectar no postgres pela porta 5432 no pgadmin. Isso me embaralhou o entendimento sobre as portas, no caso não deveria conectar pela 5440 como configurei utilizando -p 5440:5432, correto?

Criei uma rede pra associar os dois containeres.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
ae9451ec83bf        dpage/pgadmin4      "/entrypoint.sh"         6 minutes ago       Up 6 minutes        443/tcp, 0.0.0.0:85->80/tcp   gracious_bhabha
9f094c81ec13        postgres:10         "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        0.0.0.0:5440->5432/tcp        postgres-doaai

Demais comandos que utilizei.

docker network create --driver bridge rede-postgres 
docker run --name postgres-doaai --network=rede-postgres  -v /home/dev/bases/postgres:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -d -p 5440:5432  postgres:10
docker run -p 85:80 --network=rede-postgres    -e 'PGADMIN_DEFAULT_EMAIL=a@gmail.com'      -e 'PGADMIN_DEFAULT_PASSWORD=12345'     -d dpage/pgadmin4


4 respostas

Pra complementar, no pgadmin coloquei o nome do container no hostname e a porta 5432

Olá Julian, tudo bem? Isso é muito estranho, eu fiz um teste rápido aqui, porém não criei essa que você criou, usei o seguinte comando:

docker run --name postgres-doaai -v /home/jonilson/alura/postgres:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -d -p 5440:5432  postgres:alpine

E consegui acessar o banco de dados pela porta 5440 normalmente, você poderia tentar sem criar essa rede? E fala pra gente o resultado!

Já vi um caso semelhante com o MySQL que só funcionava corretamente na porta padrão dele que é a porta 3306.

Fico aguardando retorno!

Boa tarde, Jonilson!

Fiz um teste criando um container sem rede.

Assim, consigo conectar pelo psql da minha máquina pela porta 5440 sem problemas, porém pra conectar pelo pgadmin (rodando em outro container), só consigo conectar pela 5432. Acho que faz sentido, pois o docker cria um rede interna e nela está usando a porta 5432, correto?

Obrigado pelo retorno.

solução!

É isso mesmo Julian, como você está usando o PgAdmin a partir de um container ele vai está dentro dessa rede do Docker e assim, ele só vai enxergar a porta interna que é a 5432. No meu teste o PgAdmin está executando diretamente na minha máquina física por isso que funcionou, da mesma forma que você conseguiu acesso o psql pela porta 5440.

Espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software