Este ejemplo completo de Docker Compose configura un entorno local MongoDB Atlas clúster con datos persistentes. Revisar el archivo completo de Docker Compose, y cada componente, para comprender su propósito y configuración. Para obtener más información, consulte Crea una implementación local de Atlas con Docker.
Archivo Docker Compose
El siguiente ejemplo crea un clúster local de Atlas utilizando el
mongodb/mongodb-atlas-local imagen. El archivo configura la red, monta los volúmenes de datos correctos para semillas de base de datos y retención de datos, y los índices de búsqueda de Atlas.
1 services: 2 mongodb: 3 image: mongodb/mongodb-atlas-local 4 hostname: mongodb 5 environment: 6 - MONGODB_INITDB_ROOT_USERNAME=user 7 - MONGODB_INITDB_ROOT_PASSWORD=pass 8 ports: 9 - 27017:27017 10 volumes: 11 - ./init:/docker-entrypoint-initdb.d 12 - db:/data/db 13 - configdb:/data/configdb 14 - mongot:/data/mongot 15 volumes: 16 db: 17 configdb: 18 mongot:
Utiliza la siguiente información para aprovisionar tu clúster local de Atlas con tus propios datos, y preservar tu configuración y tus datos.
Estructura del archivo
El archivo Docker Compose tiene los siguientes parámetros principales:
servicesdefine los contenedores que se deben ejecutar. En este ejemplo, un único servicio denominadomongodbdefine el servicio MongoDB. Es posible que necesite otros servicios para que su aplicación completa pueda ejecutarse.volumesdefine los ubicaciones de almacenamiento persistente que puedes compartir entre contenedores. Este ejemplo muestra las ubicaciones de almacenamiento persistente requeridas para que el servicio de MongoDB funcione.
Configuración del Servicio
Imagen
image: mongodb/mongodb-atlas-local
Requerido
Este parámetro define la imagen local de MongoDB Atlas. Esta definición utiliza la versión más reciente de la imagen y es equivalente a usar la etiqueta :latest. Si tu organización requiere que uses una versión específica de imagen, puedes añadir @sha256:<digest>. Si desea utilizar una versión específica de MongoDB con las actualizaciones más recientes del sistema operativo, utilice las etiquetas del número de versión. Por ejemplo, mongodb/mongodb-atlas-local:8.0.6
Nombre del host
hostname: mongodb
Requerido
Este parámetro define el nombre de host para el contenedor. Debes especificarlo correctamente para que el set de réplicas local funcione. Este parámetro es necesario para garantizar la comunicación entre los diferentes servicios dentro de la misma red de contenedores Docker. Se puede referir a este contenedor por el mismo nombre de host, mongodb.
Configuración del entorno
Autenticación
environment: - MONGODB_INITDB_ROOT_USERNAME=user - MONGODB_INITDB_ROOT_PASSWORD=pass
Recomendado
Los parámetros destacados de environment establecen el nombre de usuario y la contraseña raíz inicial para el clúster local de Atlas. Para simplificar, en este ejemplo, las credenciales se definen en el propio archivo Docker Compose, pero puedes abstraer las credenciales en una variable de entorno.
Registro
environment: - MONGODB_INITDB_ROOT_USERNAME=user - MONGODB_INITDB_ROOT_PASSWORD=pass - MONGOT_LOG_FILE=/dev/stderr - RUNNER_LOG_FILE=/dev/stderr
Opcional
Los parámetros environment resaltados definen el registro para ayudar a diagnosticar cualquier problema. mongot, que proporciona las capacidades de MongoDB Search, genera el MONGOT_LOG_FILE. Este ejemplo genera los mongot registros en el directorio stderr. El servicio runner genera el RUNNER_LOG_FILE. El servicio runner supervisa el proceso que crea mongod y configura la integración con mongot. Este ejemplo envía los registros del runner al directorio stderr.
Volúmenes
Los volúmenes mantienen los datos y la configuración a través de los reinicios de los contenedores.
Inicialización
volumes: - ./init:/docker-entrypoint-initdb.d
Condicional
El parámetro resaltado volumes monta el directorio local init al directorio de inicialización del contenedor. Normalmente, el directorio init se encuentra en el proyecto; al ejecutar docker-compose up, el proceso busca cualquier script de inicialización en dicho directorio. Los tipos de archivo admitidos incluyen:
.jsscripts de shell de MongoDB.shscripts Bash
Por ejemplo, cuando colocas el siguiente script en la carpeta init:
El script recupera un ejemplo de conjunto de datos de muestra.
Confirma el conjunto de datos descargado.
Utiliza
mongorestore, que la imagen contenedora local de MongoDB Atlas proporciona, para restaurar el fichero en el nuevo clúster local de Atlas.Confirma los datos cargados.
init/init.sh !/bin/bash curl -O https://atlas-education.s3.amazonaws.com/sampledata.archive echo "Sample data downloaded." mongorestore --uri "$CONNECTION_STRING" --archive=./sampledata.archive echo "Sample data loaded successfully."
Nota
Cadena de conexión
Dado que construir su cadena de conexión durante el proceso de siembra puede ser un desafío, especialmente cuando cambia entre su máquina local y la red Docker, la variable de entorno $CONNECTION_STRING se proporciona automáticamente durante el proceso de siembra.
Datos
volumes: - ./init:/docker-entrypoint-initdb.d - db:/data/db - configdb:/data/configdb - mongot:/data/mongot volumes: db: configdb: mongot:
Condicional
MongoDB almacena sus datos en el directorio /data/db de forma predeterminada. En este archivo de Docker Compose, el directorio /data/db se asigna al volumen db para el servicio MongoDB. Los parámetros volumes al final del archivo Docker Compose declaran los volúmenes que otros servicios pueden usar, incluido el volumen db mapeado en el servicio mongodb. El db volumen actúa como una ubicación de almacenamiento fuera del contenedor, preservando los datos a través de los reinicios del contenedor.
Configuración
volumes: - ./init:/docker-entrypoint-initdb.d - db:/data/db - configdb:/data/configdb - mongot:/data/mongot volumes: db: configdb: mongot:
Condicional
Por defecto, MongoDB almacena sus datos de configuración en el directorio /data/configdb, que se mantiene de la misma manera que los datos almacenados.
Atlas Search (mongot)
volumes: - ./init:/docker-entrypoint-initdb.d - db:/data/db - configdb:/data/configdb - mongot:/data/mongot volumes: db: configdb: mongot:
Condicional
La imagen local de MongoDB Atlas (mongodb/mongodb-atlas-local) viene con mongot, que proporciona las capacidades de MongoDB Search y MongoDB Vector Search. Por defecto, mongot almacena índices en el directorio /data/mongot. Este volumen está mapeado, montado y sus datos persisten entre ejecuciones de la misma manera que la configuración y los datos almacenados.
Verificar que los procesos estén en buen estado
La implementación local de Atlas simplifica la configuración del proceso de MongoDB (mongod), y las capacidades de búsqueda (mongot). Durante la inicialización, estos procesos deben iniciarse y reiniciarse. En algunos casos, el contenedor puede estar en ejecución, pero el proceso que se necesita no está listo. La imagen local de MongoDB Atlas también proporciona una verificación de estado.
Puedes usar la verificación de estado para asegurarte de que los procesos de MongoDB y de la capacidad de Búsqueda, así como cualquier script de inicialización, estén completamente listos.
En tus scripts, incluya el siguiente código:
timeout 120 bash -c 'until [ "$(docker inspect --format='\''{{.State.Health.Status}}'\''<container-name>)" = "healthy" ]; do sleep 2; done'
También puedes realizar una verificación de estado cuando utilices Docker Compose.
Utilice Docker Compose
Para iniciar el servicio, ejecuta el siguiente comando:
docker-compose up
Puede agregar -d para ejecutar el servicio en modo separado.
Para detener el servicio, ejecuta el siguiente comando:
docker-compose down
Puede agregar -v para remover los volúmenes y borrar los datos. Utiliza esta opción si no quieres mantener los datos o los cambios de configuración, o si quieres asegurarte de que estás reiniciando desde un contenedor nuevo.
Para verificar si el servicio está saludable cuando ejecutas docker-compose up, agrega el parámetro condition: service_healthy:
api: depends_on: atlas_local: condition: service_healthy
Para saber más, consulta Crear una implementación local de Atlas con Docker.
Comentarios
Para discutir clústeres locales de Atlas, consulta el foro MongoDB Developer Community. Para obtener ayuda, proporcionar comentarios o solicitar funcionalidades, consulta el MongoDB Feedback motor.