Curso
Então você quer hospedar o MongoDB por conta própria ou começar a brincar com ele em um ambiente local? Se você não quer começar direto no MongoDB Atlas, tem algumas opções pra começar, tipo usar containers com o Docker.
Usar o Docker é uma boa ideia pra gerenciar sua instância do MongoDB, porque não leva mais de um minuto e é fácil de manter ou mudar de computador.
Neste artigo, vamos ver algumas abordagens para implantar o MongoDB com o Docker e explorar algumas dicas e truques ao longo do caminho.
O que você precisa saber antes de começar
Para acompanhar este tutorial, você precisa ter o Docker Engine instalado no seu computador. Isso pode ser no macOS, Windows ou Linux. Você não precisa instalar explicitamente o Docker Desktop, mas ele pode facilitar sua experiência com o Docker, dependendo do sistema operacional que você estiver usando.
Tô usando o Docker Engine pelo Rancher Desktop no macOS, por exemplo, e tá tudo funcionando bem.
Para aprimorar seus conhecimentos sobre o Docker, vale a pena conferir o curso “ ” (Docker para iniciantes) no site . Um guia prático sobre contêineres para se atualizar sobre o básico.
Baixando uma imagem do Docker do MongoDB
Antes de começar a rodar o MongoDB em um contêiner Docker, você precisa baixar uma imagem que atenda às suas necessidades. Na linha de comando, dá um olhada nisso:
docker pull mongodb/mongodb-community-server:latest
O comando acima vai baixar a imagem oficial do MongoDB Community Edition (CE) com a tag “latest”.
É importante notar que mongodb/mongodb-community-server e mongodb/mongodb-enterprise-server são imagens Docker oficiais mantidas pela MongoDB. Todas as outras imagens são mantidas pela comunidade externa e podem dar resultados diferentes ou inesperados.
Depois de baixar a imagem, dá pra ver as opções de implantação.
Executando o MongoDB como um contêiner isolado com o comando Docker Run
A maneira mais rápida de instalar o MongoDB com o Docker é só usar o comando “ docker run
” com alguns parâmetros de configuração. Por exemplo, você pode fazer o seguinte na linha de comando:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 --name mongodb mongodb/mongodb-community-server:latest
O comando acima vai pegar nossa imagem e implantá-la como um contêiner chamado “MongoDB”. O contêiner vai ter uma porta mapeada, o que significa que o host vai poder interagir com ele na porta “27017”. As informações de autenticação raiz também estão definidas neste exemplo, mas dependendo das suas necessidades de implantação, você pode usar Docker Secrets ou outra forma protegida para passar informações confidenciais.
No exemplo acima, todos os dados ficam guardados dentro do contêiner. Os dados do MongoDB, que incluem bancos de dados, coleções e até documentos, só vão ficar guardados enquanto aquele contêiner específico existir. Pode ser legal pra testes, mas muitas vezes você vai querer que os dados do MongoDB fiquem guardados de um jeito confiável no Docker. Para resolver isso, você deve criar um volume Docker usando o seguinte comando:
docker volume create mongodb
Para dizer ao seu contêiner para usar esse volume, você pode alterar seu comando de implantação para ficar mais parecido com o seguinte:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 -v mongodb:/data/db --name mongodb mongodb/mongodb-community-server:latest
Repara que, dessa vez, estamos dizendo qual volume usar. Quando você usa um volume, pode ter certeza de que seus dados vão continuar lá mesmo depois de encerrar ou atualizar seu contêiner.
Com o MongoDB rodando dentro de um contêiner Docker, você pode se conectar usando mongodb://nraboy:password1234@localhost:27017
como string de conexão a partir de uma ferramenta da sua escolha.
Incluindo o MongoDB no seu stack ou projeto com o Docker Compose
Se você está pensando em usar o MongoDB com um projeto específico, também gerenciado com o Docker, provavelmente faz sentido gerenciar o MongoDB com uma configuração do Docker Compose. Essas configurações são frequentemente usadas para criar uma área restrita para seus projetos, muitas vezes chamada de pilhas.
Crie um arquivo chamado “ docker-compose.yml
” em algum lugar no seu computador com o seguinte conteúdo:
services:
mongodb:
image: mongodb/mongodb-community-server:latest
container_name: mongodb
restart: unless-stopped
ports:
- "27017:27017"
volumes:
- mongodb:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: nraboy
MONGO_INITDB_ROOT_PASSWORD: password1234
volumes:
mongodb:
external: true
A configuração acima usa informações que já vimos no comando de linha de comando singular. Assim como no outro método, a gente espera que você já tenha criado um volume mongodb
pra ser gerenciado pelo Docker. Mais uma vez, se precisar fazer isso, execute o seguinte comando:
docker volume create mongodb
Claro, você pode gerenciar seus volumes do Docker da maneira que achar melhor. Criar um volume é só uma das várias opções.
Com a linha de comando no mesmo diretório de trabalho que o arquivo “ docker-compose.yml
”, dá um comando assim:
docker compose up -d
O comando acima inicia sua pilha no modo destacado.
Você pode ver se tá tudo certo tentando conectar na sua instância com uma ferramenta como o MongoDB Compass, um dos drivers de linguagem como o Node.js ou pelo MongoDB Shell.
Se você seguiu o exemplo direitinho, sua string de conexão vai ser mongodb://nraboy:password1234@localhost:27017
, mas dependendo de como você fez, pode ser diferente.
Para desligar sua instância do MongoDB, execute o seguinte na linha de comando com sua configuração YAML no mesmo diretório de trabalho:
docker compose down
Como estamos usando um volume externo, da próxima vez que você iniciar o contêiner, tudo continuará persistente.
Conclusão
O Docker facilita o trabalho com o MongoDB em um ambiente local ou auto-hospedado. Você não precisa se preocupar com as configurações gerais do sistema operacional ou com a experiência que terá ao alternar entre um computador e outro. Você vai ter uma experiência consistente sempre.
Para dar um passo adiante, vale a pena aprender a criar um banco de dados no MongoDB.
Torne-se um engenheiro de dados
Perguntas frequentes
Posso rodar vários contêineres MongoDB ao mesmo tempo com o Docker?
Sim, você pode rodar vários contêineres MongoDB, desde que cada um esteja mapeado para uma porta diferente ou rode em uma rede Docker separada pra evitar conflitos.
Como faço backup dos dados de um contêiner MongoDB no Docker?
Para fazer backup dos dados, você pode usar docker cp
para extrair arquivos do volume ou usar mongodump
dentro do contêiner. Os volumes persistentes também ajudam a manter os dados entre as sessões.
É seguro guardar as senhas do MongoDB no arquivo Docker Compose?
Não é o ideal. Em vez disso, use Docker Secrets ou arquivos de variáveis de ambiente (.env
) que não fazem parte do controle de versão para cuidar das credenciais importantes de forma segura.
O MongoDB funciona bem no Docker no Windows?
Sim, o MongoDB funciona bem no Docker no Windows, macOS e Linux, principalmente quando você usa o WSL 2 ou o Docker Desktop para Windows pra garantir a compatibilidade.
Posso usar o MongoDB com o Docker em produção?
Sim, mas é melhor configurar uma rede, volumes de armazenamento, autenticação e backups certinhos antes de usar o MongoDB Dockerizado num ambiente de produção.
Como faço pra conectar ao MongoDB no Docker de outro contêiner?
Use o Docker Compose e chame o contêiner do MongoDB pelo nome do serviço como nome do host. Isso permite a comunicação entre serviços na mesma rede.
Preciso instalar o MongoDB localmente se usar o Docker?
Não. O Docker roda o MongoDB em um ambiente em contêiner, então você não precisa instalar o MongoDB diretamente na sua máquina host.
Posso usar o MongoDB Compass com uma instância do MongoDB no Docker?
Claro que sim. É só usar a string de conexão certa (por exemplo, mongodb://user:pass@localhost:27017
) pra conectar o MongoDB Compass ao seu contêiner local.
Como posso monitorar o desempenho do MongoDB no Docker?
Você pode integrar ferramentas como mongostat
, mongotop
ou soluções de monitoramento externas, como Prometheus e Grafana, para acompanhar o desempenho dentro do Docker.
Os meus dados do MongoDB vão ficar guardados num contêiner Docker?
Desde que você tenha escolhido mapear o diretório do contêiner para um volume no seu computador host, os dados devem continuar lá sem problemas entre atualizações e inicializações.
Devo usar o Docker ou o MongoDB Atlas?
Na maioria dos casos, é melhor usar o MongoDB Atlas por causa dos recursos que ele tem, do preço e da facilidade de usar, mas o MongoDB pelo Docker também é uma opção legal.
Preciso usar o Docker Desktop com o MongoDB?
O Docker Desktop facilita o trabalho com o Docker na maioria das vezes, mas não é obrigatório. A maioria das distribuições Linux já vem com o Docker Engine, e outras interfaces, tipo o Rancher Desktop, também funcionam.

Nic Raboy é Líder de Relações com Desenvolvedores na MongoDB, onde lidera uma equipe de desenvolvedores Python, Java, C# e PHP que criam conteúdo incrível para ajudar os desenvolvedores a serem bem-sucedidos na inclusão do MongoDB em seus projetos. Ele tem experiência com Golang e JavaScript e escreve com frequência sobre muitas de suas aventuras de desenvolvimento.