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!
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!
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?
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.