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

Mongo DB

Gostaria de entender o seguinte detalhe: por que não é necessário especificar uma porta para a execução do container do Mongo DB? Esta instância precisa ser acessada por outro container, porém a porta 27017 não é especificada.

4 respostas
solução!

Olá,

No Dockerfile do Mongo DB ocorre a exposição da porta 27017, podendo ser assim acessada por outros containers, segue Dockerfile do Mongo DB:

https://github.com/dockerfile/mongodb/blob/master/Dockerfile

Só pra ficar claro então. Temos as seguintes situações:

  • Arquivo dockerfile com a propriedade EXPOSE com valor 3000. Isso faz com que essa porta seja exposta para os outros containers mas não pela Internet;
  • Arquivo docker-compose com a propriedade "ports" com valor 2000. Isso faz com que essa porta seja exposta para os outros containers mas não pela Internet;
  • Arquivo docker-compose com a propriedade "ports" com valor 2000:2000. Isso faz com que essa porta seja exposta para os outros containers e também para a Internet.

Ai surge a dúvida: parece que a propriedade "EXPOSE" do dockerfile e a propriedade "ports" do docker-compose, quando usada conforme o segundo tópico acima, fazem a mesma coisa.

Olá,

O comando ports expõem portas do container para a máquina host. Quando colocamos 2000:2000, estamos mapeando a porta 2000 do container para a porta 2000 da máquina host. Quando colocamos o comando ports e somente 2000 por exemplo, estamos mapeando a porta 2000 do container para uma porta aleatória da máquina host

O comando expose irá expor as portas do container para demais containers que estejam linkados com esse, porém sem fazer o mapeamento para a máquina host, como é feito pelo comando ports

Entendido, obrigado.