Criar uma implantação local do Atlas com Docker
Nesta página
- Criar uma implantação local do Atlas com Docker
- Criar um Sistema do Atlas Local com o Docker Compose
- Persistência de dados em execuções com o Docker Compose
- Gerar uma lista de dependências
- Verificar a assinatura da imagem
- Execute a imagem com ações do Github
- Converter imagem oficial em um sistema local do Atlas
Este tutorial mostra como criar um sistema local do Atlas com Docker. Neste tutorial, implantaremos um conjunto de réplicas de nó único com Docker.
Criar uma implantação local do Atlas com Docker
Instale e inicie o Docker.
Para saber mais,consulte a documentação do Docker.
Execute a imagem do Docker.
Exemplo:
docker run -p 27017:27017 mongodb/mongodb-atlas-local
Importante
Se sua máquina local executar o MacOS Sequoia 15.2 com o processador Apple Silicon M,4 adicione o seguinte parâmetroJVM do ao docker run
comando para evitar que seu container falhe na inicialização. Por exemplo:
docker run -e JAVA_TOOL_OPTIONS="-XX:UseSVE=0" -p 27017:27017 mongodb/mongodb-atlas-local
docker run -e MONGODB_INITDB_ROOT_USERNAME=user -e MONGODB_INITDB_ROOT_PASSWORD=pass -p 27017:27017 mongodb/mongodb-atlas-local
Importante
Se a máquina local executar o MacOS Sequoia 15.2 com o processador Apple Silicon M,4 adicione o seguinte parâmetro JVM ao docker run
comando para evitar que o container falhe na inicialização. Por exemplo:
docker run -e JAVA_TOOL_OPTIONS="-XX:UseSVE=0" -p 27017:27017 mongodb/mongodb-atlas-local
Para automatizar um sistema em contêiner do Atlas, você precisará esperar que o contêiner esteja em um estado saudável antes de poder se conectar ao Atlas.
O exemplo a seguir demonstra o sistema de uma imagem do Atlas no Docker e a sondagem do Docker para verificar o estado do container. Quando o container estiver em um estado saudável, o script automatize uma conexão com sua instância do Atlas com o Mongosh.
Crie um arquivo chamado
mongodb-atlas-local.sh
e cole o seguinte script no seu novo arquivo.Start mongodb-atlas-local container echo "Starting the container" CONTAINER_ID=$(docker run --rm -d -P mongodb/mongodb-atlas-local:latest) echo "waiting for container to become healthy..." function wait() { CONTAINER_ID=$1 echo "waiting for container to become healthy..." for _ in $(seq 120); do STATE=$(docker inspect -f '{{ .State.Health.Status }}' "$CONTAINER_ID") case $STATE in healthy) echo "container is healthy" return 0 ;; unhealthy) echo "container is unhealthy" docker logs "$CONTAINER_ID" stop exit 1 ;; *) sleep 1 esac done echo "container did not get healthy within 120 seconds, quitting" docker logs mongodb_atlas_local stop exit 2 } wait "$CONTAINER_ID" EXPOSED_PORT=$(docker inspect --format='{{ (index (index .NetworkSettings.Ports "27017/tcp") 0).HostPort }}' "$CONTAINER_ID") Build the connectionstring CONNECTION_STRING="mongodb://127.0.0.1:$EXPOSED_PORT/test?directConnection=true" Example usage of the connection string to connect to mongosh mongosh "$CONNECTION_STRING" Execute o seguinte comando para tornar o arquivo executável.
chmod +x mongodb-atlas-local.sh Execute o executável.
./mongodb-atlas-local.sh
Conecte-se ao sistema Atlas local.
Para se conectar à implantação local do Atlas a partir do host (não do container), copie e cole o seguinte comando em um novo terminal e substitua a variável {connection_string}
por sua string de conexão.
Observação
O exemplo a seguir usa mongosh
, mas você pode usar o método de conexão de sua preferência.
mongosh {connection_string}
Exemplos:
mongosh "mongodb://localhost:27017/?directConnection=true"
mongosh "mongodb://user:pass@localhost:27017/?directConnection=true"
Criar um Sistema do Atlas Local com o Docker Compose
Crie um sistema local do Atlas com Docker Compose.
Observação
Se você tiver uma implementação existente do Atlas baseada no Docker-Compose que criou com a imagem oficial do Docker do MongoDB e que gostaria de converter para usar a imagem Atlas Local Dev, consulte Converter em uma implementação local abaixo.
Instale e inicie o Docker.
Para saber mais,consulte a documentação do Docker.
Instale o Docker Compose.
Exemplo:
brew install docker-compose
Para saber mais, consulte a documentação de instalação do Docker Compose.
Crie um arquivo docker-compose.yaml
.
Crie o arquivo docker-compose.yaml
no mesmo diretório do qual você executa o Docker Compose.
Exemplo:
1 services: 2 mongodb: 3 image: mongodb/mongodb-atlas-local 4 environment: 5 - MONGODB_INITDB_ROOT_USERNAME=user 6 - MONGODB_INITDB_ROOT_PASSWORD=pass 7 ports: 8 - 27018:27017
Conecte-se ao sistema Atlas local.
Para se conectar à implantação local do Atlas a partir do host (não do container), copie e cole o seguinte comando em um novo terminal e substitua a variável {connection_string}
por sua string de conexão.
Observação
O exemplo a seguir usa mongosh
, mas você pode usar o método de conexão de sua preferência.
mongosh {connection_string}
Exemplo:
mongosh "mongodb://user:pass@localhost:27018/?directConnection=true"
Persistência de dados em execuções com o Docker Compose
Você pode persistir dados em várias execuções com o Docker Compose. A persistência dos dados ajuda a garantir que os dados não sejam perdidos entre as execuções. Os dados permanecem disponíveis em todas as execuções do Docker Compose.
Instale e inicie o Docker.
Para saber mais,consulte a documentação do Docker.
Instale o Docker Compose.
Exemplo:
brew install docker-compose
Para saber mais, consulte a documentação de instalação do Docker Compose.
Crie um arquivo docker-compose.yaml
.
Atualize o arquivo docker-compose.yaml
para montar os diretórios de dados necessários como volumes.
Exemplo:
1 services: 2 mongodb: 3 hostname: mongodb 4 image: mongodb/mongodb-atlas-local 5 environment: 6 - MONGODB_INITDB_ROOT_USERNAME=user 7 - MONGODB_INITDB_ROOT_PASSWORD=pass 8 ports: 9 - 27019:27017 10 volumes: 11 - data:/data/db 12 - config:/data/configdb 13 volumes: 14 data: 15 config:
Execute o Docker Compose.
O comando abaixo cria um sistema Atlas local com os recursos do Atlas Search habilitados.
Exemplo:
docker-compose up
Você também pode executar o Docker Compose no modo independente.
Exemplo:
docker-compose up -d
Conecte-se ao sistema Atlas local.
Para se conectar à implantação local do Atlas a partir do host (não do container), copie e cole o seguinte comando em um novo terminal e substitua a variável {connection_string}
por sua string de conexão.
Observação
O exemplo a seguir usa mongosh
, mas você pode usar o método de conexão de sua preferência.
mongosh {connection_string}
Exemplo:
mongosh "mongodb://user:pass@localhost:27019/?directConnection=true"
Gerar uma lista de dependências
Você pode gerar uma lista das dependências para a imagem do Docker do mongodb/mongodb-atlas-local
.
Instale o syft.
Exemplo:
brew install syft
Para saber mais, consulte o README do syft.
Verificar a assinatura da imagem
Você pode verificar a assinatura da imagem do Docker do mongodb/mongodb-atlas-local
.
Instale o cosign.
Exemplo:
brew install cosign
Para saber mais,consulte a Instalação do cosign.
Execute a imagem com ações do Github
Para executar a imagem do Docker do mongodb/mongodb-atlas-local
com ações do Github , crie um arquivo de fluxo de trabalho. Para saber mais, consulte o Github Início rápido de ações do .
Exemplo:
Crie o seguinte arquivo mongodb.yml
no diretório .github/workflows
:
on: push: branches: - main pull_request: jobs: run: runs-on: ubuntu-latest services: mongodb: image: mongodb/mongodb-atlas-local ports: - 27017:27017 steps: - name: install mongosh run: | curl --output mongosh.deb https://downloads.mongodb.com/compass/mongodb-mongosh_2.2.1_amd64.deb sudo dpkg -i mongosh.deb mongosh --version - run: mongosh 'mongodb://localhost/?directConnection=true' --eval 'show dbs'
Converter imagem oficial em um sistema local do Atlas
Se você tiver uma implementação existente do Atlas em execução no Docker Compose que você criou com a imagem oficial do Docker do mongo, poderá consultar a seguinte lista de verificação para simplificar sua conversão para a imagem mongodb-atlas-local.
Remova qualquer
command
existente do seu arquivodocker-compose.yaml
. Como ocommand
em uma definição do Docker Compose substitui oENTRYPOINT
definido na imagemmongodb-atlas-local
, você deve remover qualquercommand
existente para que a imagemmongodb-atlas-local
seja executada conforme projetado.Não há necessidade de definir uma verificação de integridade para o sistema do Atlas , pois esse recurso está integrado na imagem
mongodb-atlas-local
.
Exemplo de atualizações de composição do Docker
Os exemplos a seguir ilustram as prováveis alterações necessárias no arquivo YAML do Docker Compose:
services: self_built_atlas_implementation: image: mongo:8.0 ports: - 27017:27017 command: ["./entrypoint.sh"] # You may have defined a health check for the database in the entrypoint script.
services: local_dev_atlas: image: mongodb/mongodb-atlas-local:8.0 hostname: local_dev_atlas ports: - 27017:27017 environment: - MONGODB_INITDB_ROOT_USERNAME=user - MONGODB_INITDB_ROOT_PASSWORD=pass volumes: - data:/data/db - config:/data/configdb volumes: - data: - config: