Criei meu serviço usando o seguinte comando com o docker:
docker service create --mount
type=bind,src=/tmp/postgres,dst=/var/lib/postgresql/data
--name dev_db
--network mynetwork -p 5432:5432 -d postgres
O problema é que, se eu não usar a rede de sobreposição --network
, posso me conectar a essa instância do docker de outro host usando apenas o cliente postgresql simples:
psql -h (ipofthehost) mydatabase -Umydatabase
mas agora que quero me conectar a ele de outro host, recebo este erro:
psql: could not connect to server: Connection refused
Is the server running on host "ipofdehost" and accepting
TCP/IP connections on port 5432?
O que está me dizendo que pode estar em execução, mas não pode ser visto.
Verifiquei se o serviço está sendo executado com:
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
8hr0qwtca230 dev_db replicated 1/1 postgres:latest *:5432->5432/tcp
Eu verifiquei com ss para ver se o serviço está atendendo:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 :::5432 :::*
LISTEN 0 128 :::12376 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::443 :::*
Parece que está escutando por causa da linha: :::5432
, mas para mim parece que é apenas para conexões ipv6, então como posso fazer isso para ouvir conexões ipv4 ?, tudo que eu mudei foi que Eu conectei esse nó à rede de sobreposição, então não entendi por que, se eu fizesse isso para expor, as portas não estão sendo disponibilizadas publicamente.
Obrigado!