Docs Menu
Docs Home
/ /

Cree una implementación local de Atlas con Docker

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.

1

Para obtener más información, consulte el Documentación de Docker.

2

Ejemplo:

docker pull mongodb/mongodb-atlas-local:latest
3

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.

  1. 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"
  2. Ejecutar el siguiente comando para que el archivo sea ejecutable.

    chmod +x mongodb-atlas-local.sh
  3. Ejecutar el ejecutable.

    ./mongodb-atlas-local.sh
4

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. 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.

1

Para aprender más, se puede consultar la documentación de Docker.

2

Ejemplo:

brew install docker-compose

Para aprender más, se puede consultar la documentación de instalación de Docker Compose.

3

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:

1services:
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
4

El siguiente comando crea una implementación local de Atlas con las capacidades de Atlas Search activadas.

Ejemplo:

docker-compose up
5

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"
6
docker compose down -v

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.

1

Para aprender más, se puede consultar la documentación de Docker.

2

Ejemplo:

brew install docker-compose

Para aprender más, se puede consultar la documentación de instalación de Docker Compose.

3

Actualizar el archivo docker-compose.yaml para montar los directorios de datos necesarios como volúmenes.

Ejemplo:

1services:
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
13volumes:
14 data:
15 config:
4

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
5

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"

Se puede generar una lista de las dependencias para la imagen Docker mongodb/mongodb-atlas-local.

1

Ejemplo:

brew install syft

Para aprender más, se puede consultar el README de syft.

2
syft mongodb/mongodb-atlas-local

Puede verificar la firma de la imagen de Docker mongodb/mongodb-atlas-local.

1

Ejemplo:

brew install cosign

Para aprender más, se puede consultar la instalación de cosign.

2

Ejemplo:

curl -O https://cosign.mongodb.com/mongodb-atlas-local.pem
COSIGN_REPOSITORY="docker.io/mongodb/signatures" cosign verify --private-infrastructure --key=./mongodb-atlas-local.pem "mongodb/mongodb-atlas-local";

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'

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.

  1. Remover cualquier command existente del archivo docker-compose.yaml. Debido a que el command en una definición de Docker Compose anula el ENTRYPOINT definido en la imagen mongodb-atlas-local, se debe remover cualquier command existente para que la imagen mongodb-atlas-local se ejecute tal y como está diseñada.

  2. 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.

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:

Volver

Crear una implementación local

En esta página