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. Para obter um exemplo completo e detalhado do Docker Compose, consulte Exemplo do Docker Compose.
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
docker run -e MONGODB_INITDB_ROOT_USERNAME=user -e MONGODB_INITDB_ROOT_PASSWORD=pass -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. Para obter um exemplo completo e detalhado, consulte Exemplo de composição do Docker.
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 docker-compose.yaml
arquivo no mesmo diretório do qual você executa o Docker Compose. Para obter um exemplo completo e detalhado, consulte Exemplo de composição do Docker.
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 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 Início rápido de ações do Github.
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: