1. Cenário

Neste artigo vamos explorar o docker compose com o MongoDb. Vamos imaginar o seguinte cenário. Precisamos desenvolver uma API e realizar a persistência em um banco de dados Mongo. Anteriormente ao advento do docker, era necessário a instalação de todas as aplicações e serviços para utilizarmos o banco de dados, quem nunca sofreu com isso que atire a primeira pedra!

Agora, com a facilidade da utilização de conteiners, podemos “levantar” uma instância de Mongo (entre tantos outros bancos) apenas com um comando! Segue aqui alguns pontos importantes para a utilização do conteiner com o banco de dados:

  1. Fácil utilização sem a necessidade de instalações adicionais, basta termos o docker instalado em nossa estação de trabalho.
  2. Velocidade de utilização, basta levantar um contêiner e pronto, seu banco de dados está pronto para utilização.
  3. É possível inserirmos testes integrados no momento do deploy. Configuramos na esteira de deploy a execução dos serviços ou aplicações com a integração com o banco de dados. Isso conta com maior qualidade de código e maior cobertura de testes.

O foco aqui será para levantarmos o banco, mas quando tiver seu serviço ou aplicação, adicione o mesmo no arquivo docker compose para execução de todo o escopo em contêiner, enquanto em tempo de desenvolvimento faça a conexão de sua aplicação ou serviço diretamente ao contêiner.

1. Criando o arquivo docker compose

Na raiz da pasta de sua solução, crie um arquivo chamado docker-compose.yml. Para levantarmos o mongo, basta inserir o conteúdo abaixo no arquivo criado.

name: "example.mongo"
services:
  mongo:
    container_name: ex-mongo
    image: mongo
    restart: always
    ports:
      - 27017:27017
    volumes:
      - mongo-db-volume:/data/db
    environment:
      - MONGO_INITDB_DATABASE=test
      - MONGO_INITDB_ROOT_USERNAME=mongoadmin
      - MONGO_INITDB_ROOT_PASSWORD=secret
volumes:
  mongo-db-volume:
    external: false

Salve o arquivo, abra o terminal e execute o comando abaixo:

$ docker compose up

Com esta execução, estaremos deixando o nosso terminal exibindo os logs de interação com o mongo. Teremos um resultado semelhante a este:

docker-compose-mongo.png

Abrindo uma nova instância de seu terminal, vamos conferir o contêiner que está em execução com nossa parametrização:

Execute o código abaixo para listar os contêiners que estão em execução:

$ docker container ps

Teremos um resultado semelhante ao abaixo:

container-ps-mongo.png

Para pararmos o contêiner e excluirmos o volume criado, basta executar o comando abaixo:

$ docker container down -v

Teremos um resultado semelhante ao abaixo:

compose-down-mongo.png

Após a execução do comando, utilize o comando docker conteiner ps para certificar que o mesmo está parado. Para certificar se o volume foi excluído, utilize o comando docker image ls

2. Conectando ao nosso banco com o aplicativo MongoDB Compass

O MongoDB Compass é uma GUI gratuita para conexão com o MongoDb. Você pode ter mais informações e realizar o download neste link. Utilizaremos esta ferramenta para conectarmos na instência que acabamos de criar.

Abrindo a ferramenta, será apresentado uma área para a conexão.

A conexão padrão para o localhosté mongodb://localhost:27017. Iremos apenas adicionar as informações de autenticação que configuramos em nosso arquivo docker compose. Para inserir as informações de autenticação, clique em Advanced Connection Options e selecione a opção Username/Password. Iremos preencher conforme a imagem abaixo:

mongodb-connection.png

Após o preenchimento, basta clicar em Connect que a conexão deverá ser realizada com sucesso. O resultado será apresentado como a imagem abaixo:

mongodb-home.png

Importante: So banco test só será criado após a inserção de uma primeira collection.

Este foi um artigo rápido com a intenção de facilitar e otimizar seu dia a dia. Teremos mais artigos para explorarmos o docker compose e o MongoDB.

Se você gostou do conteúdo, deixe um comentário ou uma reação para apoiar o projeto! Compartilhe com alguém e ajude a divulgar!

[]´s

Degas