Menu Docs
Página inicial do Docs
/ /
Atlas CLI
/ /

Exemplo de composição do Docker

Este exemplo completo do Docker Compose configura um cluster MongoDB Atlas local com dados persistentes. Revise o arquivo Docker Compose completo e cada componente para entender sua finalidade e configuração. Para saber mais, consulte Criar um sistema local do Atlas com Docker.

O exemplo seguinte cria um cluster local do Atlas utilizando a imagem mongodb/mongodb-atlas-local. O arquivo configura a rede, monta os volumes de dados corretos para semear o banco de dados , os dados persistentes e os índices do Atlas Search .

1services:
2 mongodb:
3 image: mongodb/mongodb-atlas-local
4 hostname: mongodb
5 environment:
6 - MONGODB_INITDB_ROOT_USERNAME=user
7 - MONGODB_INITDB_ROOT_PASSWORD=pass
8 ports:
9 - 27017:27017
10 volumes:
11 - ./init:/docker-entrypoint-initdb.d
12 - db:/data/db
13 - configdb:/data/configdb
14 - mongot:/data/mongot
15volumes:
16 db:
17 configdb:
18 mongot:

Utilize as seguintes informações para provisionar seu agrupamento do Atlas local com seus próprios dados e persistir sua configuração e dados.

O arquivo Docker Compose tem os seguintes parâmetros principais:

  • services define os containers a serem executados. Neste exemplo, um único serviço denominado mongodb define o serviço MongoDB . Você pode ter outros serviços necessários para que seu aplicação completo seja executado.

  • volumes define os locais de armazenamento persistentes que você pode compartilhar entre contêineres. Este exemplo mostra os locais de armazenamento persistentes necessários para o serviço MongoDB operar.

image: mongodb/mongodb-atlas-local

Obrigatório

Este parâmetro define a imagem do MongoDB Atlas local. Esta definição utiliza a versão mais recente da imagem e é equivalente ao uso da :latest marcação . Se sua organização exigir que você use uma construção de imagem específica, você poderá @sha256:<digest> anexar. Se você quiser usar uma versão específica do MongoDB com as atualizações mais recentes do sistema operacional, use as marcações de número da versão. Por exemplo, mongodb/mongodb-atlas-local:8.0.6

hostname: mongodb

Obrigatório

Este parâmetro define o nome do host do container. Você deve especificar isso corretamente para que o conjunto de réplicas local funcione. Este parâmetro é necessário para garantir a comunicação entre os diferentes serviços dentro da mesma rede de contêineres do Docker. Você pode referir-se a este container com o mesmo nome de host, mongodb.

environment:
- MONGODB_INITDB_ROOT_USERNAME=user
- MONGODB_INITDB_ROOT_PASSWORD=pass

Recomendado

Os parâmetros environment destacados definem o nome de usuário e a senha raiz inicial do Atlas cluster local. Para simplificar, neste exemplo, as credenciais são definidas no próprio arquivo Docker Compose, mas você pode abstrair as credenciais em uma variável de ambiente.

environment:
- MONGODB_INITDB_ROOT_USERNAME=user
- MONGODB_INITDB_ROOT_PASSWORD=pass
- MONGOT_LOG_FILE=/dev/stderr
- RUNNER_LOG_FILE=/dev/stderr

Opcional

Os parâmetros environment destacados definem o registro para ajudar a diagnosticar qualquer problema. O mongot, que fornece os recursos do Atlas Search , gera o MONGOT_LOG_FILE. Este exemplo gera os logs do mongot para o diretório stderr. O serviço de executor gera o RUNNER_LOG_FILE. O serviço de executor monitora o processo que cria o mongod e configura a integração com mongot. Este exemplo gera os registros do executor para o diretório stderr.

Os volumes persistem os dados e a configuração nas reinicializações do container.

volumes:
- ./init:/docker-entrypoint-initdb.d

Condicional

O parâmetro volumes realçado monta o diretório init local no diretório de inicialização do container. Normalmente, o diretório init é colocado no projeto e, quando você executa o docker-compose up, o processo pesquisa quaisquer scripts de inicialização neste diretório. Os tipos de arquivo suportados incluem:

  • .js Scripts de shell do MongoDB

  • .sh Scripts bash

Por exemplo, quando você coloca o seguinte script na pasta init:

  1. O script recupera um conjunto de dados de amostra de exemplo .

  2. Confirma o conjunto de dados baixado.

  3. Usa,mongorestore que a imagem do container local do MongoDB Atlas fornece, para restaurar o arquivo no novo cluster local do Atlas .

  4. Confirma os dados carregados.

# init/init.sh
#!/bin/bash
curl -O https://atlas-education.s3.amazonaws.com/sampledata.archive
echo "Sample data downloaded."
mongorestore --uri "$CONNECTION_STRING" --archive=./sampledata.archive
echo "Sample data loaded successfully."

Observação

Connection string

Como construir sua string de conexão durante o processo de sementeira pode ser um desafio, especialmente quando você alterna entre sua máquina local e a rede Docker, a variável de ambiente $CONNECTION_STRING é fornecida automaticamente durante o processo de sementeira.

volumes:
- ./init:/docker-entrypoint-initdb.d
- db:/data/db
- configdb:/data/configdb
- mongot:/data/mongot
volumes:
db:
configdb:
mongot:

Condicional

O MongoDB armazena seus dados no diretório /data/db por padrão. Neste arquivo Docker Compose, o diretório /data/db é então mapeado para o volume db para o serviço MongoDB . Os parâmetros volumes no final do arquivo Docker Compose declaram os volumes que outros serviços podem usar, incluindo o volume db mapeado no serviço mongodb. O volume db atua como um local de armazenamento fora do container, preservando os dados entre as reinicializações do container.

volumes:
- ./init:/docker-entrypoint-initdb.d
- db:/data/db
- configdb:/data/configdb
- mongot:/data/mongot
volumes:
db:
configdb:
mongot:

Condicional

Por padrão, o MongoDB armazena seus dados de configuração no diretório /data/configdb, que persiste da mesma forma que os dados armazenados.

volumes:
- ./init:/docker-entrypoint-initdb.d
- db:/data/db
- configdb:/data/configdb
- mongot:/data/mongot
volumes:
db:
configdb:
mongot:

Condicional

A imagem local do MongoDB Atlas () mongodb/mongodb-atlas-local vem mongot com, que fornece os recursos Atlas Search e Atlas Vector Search . Por padrão, mongot armazena índices no /data/mongot diretório. Esse volume é mapeado, montado e seus dados persistem entre as execuções da mesma forma que a configuração e os dados armazenados.

A implementação local do Atlas simplifica a configuração do processo do MongoDBmongod () e dos recursos de pesquisamongot) (. Durante a inicialização, estes processos devem ser iniciados e reiniciados. Em alguns casos, o container pode estar em execução, mas o processo necessário não está pronto A imagem local do MongoDB Atlas também fornece uma verificação de integridade.

Você pode usar a verificação de integridade para garantir que os processos de recurso do MongoDB e de pesquisa, bem como quaisquer scripts de inicialização, estejam totalmente prontos.

Em seus scripts, inclua o seguinte código:

timeout 120 bash -c 'until [ "$(docker inspect --format='\''{{.State.Health.Status}}'\''<container-name>)" = "healthy" ]; do sleep 2; done'

Você também pode fazer uma verificação de integridade ao usar o Docker Compose.

Para iniciar o serviço, execute o seguinte comando:

docker-compose up

Você pode anexar -d para executar o serviço no modo independente.

Para interromper o serviço, execute o seguinte comando:

docker-compose down

Você pode anexar -v para remover os volumes e limpar os dados. Use essa opção se não quiser persistir alterações de dados ou configuração, ou se quiser garantir que esteja reiniciando a partir de um novo container.

Para verificar se o serviço está íntegro ao executar docker-compose up, adicione o parâmetro condition: service_healthy:

api:
depends_on:
atlas_local:
condition: service_healthy

Para saber mais,consulte Criar uma implantação de Atlas local com Docker.

Para discutir clusters locais do Atlas , consulte o fórum da comunidade de desenvolvedores MongoDB . Para obter ajuda, fornecer feedback ou solicitar recursos, consulte o Mecanismo de Feedback do MongoDB .

Voltar

Implante com Docker

Nesta página