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

Mongo porta docker-compose

Olá pessoal,

Ainda não entendi porque o serviço do mongo é o único que não precisa explicitar porta no docker-compose.yml. Alguém pode me explicar, por favor?

Obrigado!

7 respostas

Oi Ítalo,

Essa imagem do mongo já vem com uma porta exposta, conforme indicado na documentação do Docker:

This image includes EXPOSE 27017 (the mongo port), so standard container linking will make it automatically available to the linked containers.

Percebi que a imagem do MySql também é assim, então acredito ser um padrão em imagens de banco de dados.

Espero ter ajudado,

Abraço

Opa Vitor, beleza?

Obrigado pela resposta. Foi o que eu imaginei.

No entanto, por exemplo, no Dockerfile do Alura books, também há uma exposição explícita da porta 3000, e, mesmo assim, no arquivo de configuração do docker compose é necessário expor (novamente?)

FROM node:latest
MAINTAINER Douglas Quintanilha
ENV NODE_ENV=development
COPY . /var/www
WORKDIR /var/www
RUN npm install 
ENTRYPOINT ["npm", "start"]
EXPOSE 3000

Ítalo, boa tarde!

É que existe uma diferença entre o EXPOSE e o ports. Se você reparar, no docker file é usado o EXPOSE e no docker.compose, o ports. Com o EXPOSE você expõe aquela porta do cointainer para outros cointainers, mas não para o host. Com o ports você mapeia o cointainer com o host.

Lembrando que o docker-compose não precisa que existam os docker files.

Qualquer coisa é só falar!

Abraço

Vitor, o que você disse faz total sentido.

O Nginx teve sua porta exposta para o mundo externo através do port (É por ele que todo o acesso à aplicação sera feito). OK

O Mongo não precisa ter porta exposta para o mundo externo. Faz sentido também, já que a aplicação poderá acessá-lo, porque estão na mesma rede. OK

Porém não fez sentido para mim os nodes terem suas portas expostas para o mundo externo. O acesso da aplicação não se dá apenas pelo Nginx? O Ngnix já conseguiria acessar os nodes, já que estão na mesma rede. Por que expor as portas dos nodes com o port?

Obrigado.

Alguém?

solução!

Oi Ítalo

Pesquisei em alguns sites e acho que em todos o port é usado nos cointainers dos nodes. Mas acredito que neste nosso caso, você tem razão, não é obrigatório esse port dado que está tudo na mesma rede e o acesso pode ser feito pelo próprio Ngnix.

Olá, Vitor,

Sim, foi o que pensei. Tentei subir tudo, sem expor as portas dos nodes, e funcionou normalmente. Talvez para algum caso específico seja útil expô-las.

Obrigado pela resposta,

Italo.