Este tutorial muestra cómo crear una implementación local de Atlas con Docker. En este tutorial, implementaremos un conjunto de réplicas de un solo nodo con Docker. Para ver un ejemplo completo y detallado de Docker Compose, consulte Ejemplo de Docker Compose.
Cree una implementación local de Atlas con Docker
Instalar e iniciar Docker.
Para obtener más información, consulte el Documentación de Docker.
Ejecute la imagen de Docker.
Ejemplo:
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 una implementación contenedorizada de Atlas, se deberá esperar a que el contenedor esté en buen estado antes de poder conectarse a Atlas.
El siguiente ejemplo demuestra cómo implementar una imagen de Atlas en Docker y sondear Docker para verificar el estado del contenedor. Una vez que el contenedor está en buen estado, el script automatiza la conexión a su instancia de Atlas con Mongosh.
Crear un archivo llamado
mongodb-atlas-local.sh, y pegar el siguiente script en su nuevo archivo.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" Ejecutar el siguiente comando para que el archivo sea ejecutable.
chmod +x mongodb-atlas-local.sh Ejecutar el ejecutable.
./mongodb-atlas-local.sh
Conectarse a la implementación local de Atlas.
Para conectarse a la implementación local de Atlas desde el host (no el contenedor), se debe copiar y pegar el siguiente comando en un nuevo terminal y reemplazar la variable {connection_string} con la cadena de conexión.
Nota
El siguiente ejemplo usa mongosh, pero se puede usar el método de conexión que se prefiera.
mongosh {connection_string}
Ejemplos:
mongosh "mongodb://localhost:27017/?directConnection=true"
mongosh "mongodb://user:pass@localhost:27017/?directConnection=true"
Crear una implementación local de Atlas con Docker Compose
Crear una implementación local de Atlas con Docker Compose. Para un ejemplo completo y detallado, se puede consultar Ejemplo de Docker Compose.
Nota
Si se cuenta con una implementación de Atlas existente basada en Docker Compose, compilada con la imagen oficial de Docker de MongoDB, y se desea convertir para usar la imagen de desarrollo local de Atlas, se puede consultar Convertir a una implementación de desarrollo local a continuación.
Instalar e iniciar Docker.
Para aprender más, se puede consultar la documentación de Docker.
Instalar Docker Compose.
Ejemplo:
brew install docker-compose
Para aprender más, se puede consultar la documentación de instalación de Docker Compose.
Crea un docker-compose.yaml archivo.
Crear el archivo docker-compose.yaml en el mismo directorio desde el que se ejecuta Docker Compose. Para un ejemplo completo y detallado, se puede consultar Ejemplo de Docker Compose.
Ejemplo:
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
Conectarse a la implementación local de Atlas.
Para conectarse a la implementación local de Atlas desde el host (no el contenedor), se debe copiar y pegar el siguiente comando en un nuevo terminal y reemplazar la variable {connection_string} con la cadena de conexión.
Nota
El siguiente ejemplo usa mongosh, pero se puede usar el método de conexión que se prefiera.
mongosh {connection_string}
Ejemplo:
mongosh "mongodb://user:pass@localhost:27018/?directConnection=true"
Persistir datos entre ejecuciones con Docker Compose
Se pueden persistir datos a través de múltiples ejecuciones con Docker Compose. La persistencia de datos ayuda a asegurar que los datos no se pierdan entre ejecuciones. Los datos permanecen disponibles entre distintas ejecuciones de Docker Compose.
Instalar e iniciar Docker.
Para aprender más, se puede consultar la documentación de Docker.
Instalar Docker Compose.
Ejemplo:
brew install docker-compose
Para aprender más, se puede consultar la documentación de instalación de Docker Compose.
Crea un docker-compose.yaml archivo.
Actualizar el archivo docker-compose.yaml para montar los directorios de datos necesarios como volúmenes.
Ejemplo:
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:
Ejecutar Docker Compose.
El siguiente comando crea una implementación local de Atlas con las capacidades de Atlas Search activadas.
Ejemplo:
docker-compose up
También se puede ejecutar Docker Compose en modo separado.
Ejemplo:
docker-compose up -d
Conectarse a la implementación local de Atlas.
Para conectarse a la implementación local de Atlas desde el host (no el contenedor), se debe copiar y pegar el siguiente comando en un nuevo terminal y reemplazar la variable {connection_string} con la cadena de conexión.
Nota
El siguiente ejemplo usa mongosh, pero se puede usar el método de conexión que se prefiera.
mongosh {connection_string}
Ejemplo:
mongosh "mongodb://user:pass@localhost:27019/?directConnection=true"
Generar una lista de dependencias
Se puede generar una lista de las dependencias para la imagen Docker mongodb/mongodb-atlas-local.
Install syft.
Ejemplo:
brew install syft
Para aprender más, se puede consultar el README de syft.
Verifique la firma de la imagen
Puede verificar la firma de la imagen de Docker mongodb/mongodb-atlas-local.
Instalar cosign.
Ejemplo:
brew install cosign
Para aprender más, se puede consultar la instalación de cosign.
Ejecutar la imagen con GitHub Actions
Para ejecutar la imagen de Docker mongodb/mongodb-atlas-local con acciones de GitHub, se puede crear un archivo de flujo de trabajo. Para aprender más, se puede consultar el Inicio rápido de Acciones de GitHub.
Ejemplo:
Cree el siguiente archivo mongodb.yml en el directorio .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'
Convertir la imagen oficial a una implementación local de Atlas
Si hay una implementación de Atlas existente ejecutándose en Docker Compose que se ha compilado con la imagen oficial de Docker mongo, se puede consultar la siguiente lista de verificación para simplificar la conversión a la imagen mongodb-atlas-local.
Remover cualquier
commandexistente del archivodocker-compose.yaml. Debido a que elcommanden una definición de Docker Compose anula elENTRYPOINTdefinido en la imagenmongodb-atlas-local, se debe remover cualquiercommandexistente para que la imagenmongodb-atlas-localse ejecute tal y como está diseñada.No es necesario definir una verificación de estado para la implementación de Atlas, ya que esta funcionalidad está incorporada en la imagen
mongodb-atlas-local.
Ejemplos de actualizaciones de Docker Compose
Los siguientes ejemplos ilustran los cambios que probablemente sean necesarios en el archivo YAML de 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: