Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Cree una implementación local de Atlas con Docker

Este tutorial muestra cómo crear una implementación local de Atlas con Docker. Este tutorial describe cómo implementar un set de réplicas de un solo nodo con Docker. Para obtener un ejemplo completo y detallado de Docker Compose, se puede consultar Ejemplo de Docker Compose.

obligatorio:

Recomendado:

No se requiere ninguna configuración de nube privada virtual (VPC), firewall o proxy. La implementación se ejecuta en la red local.

1

Para aprender más, se puede consultar la 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 MongoDB Search habilitadas.

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 MongoDB Search habilitadas.

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:

Después de iniciar el contenedor, confirme que la implementación se está ejecutando y que puede conectarse.

punto de control
Paso de verificación

Imagen extraída

Ejecute docker images | grep mongodb-atlas-local. La imagen aparece en la salida.

Contenedor en ejecución

Ejecute docker ps. El contenedor aparece con el estado Up.

Contenedor en buen estado

Ejecute docker inspect <container-id> | grep Health. El estado muestra healthy.

La conexión se realiza correctamente

Conéctese con mongosh utilizando la cadena de conexión (por ejemplo, mongodb://localhost:27017/?directConnection=true).

Volúmenes de datos presentes (opcional)

Ejecute docker volume ls. Los volúmenes de datos aparecen en la salida.

Después de crear y verificar su implementación local de Atlas con Docker, puede:

  • Conecte su aplicación: Utilice la cadena de conexión en la configuración de su aplicación.

  • Configurar la persistencia de datos: Asigne volúmenes de Docker para retener datos en los reinicios de contenedores. Consulte Crear una implementación local de Atlas con Docker para obtener más información.

  • Utilice un flujo de trabajo de Docker Compose: Para aplicaciones de varios servicios, integre la implementación en un archivo docker-compose.yaml. Para obtener un ejemplo completo, consulte Ejemplo de Docker Compose.

  • Busque sus datos: utilice MongoDB Search para crear y probar índices de búsqueda en su implementación local. Para conocer los pasos detallados, consulte Crear un índice de MongoDB Search y ejecutar una query.

  • Utilice Atlas CLI en su lugar: Para una implementación local gestionada por CLI, consulte Crear una implementación local de Atlas.