Este ejemplo completo de Docker Compose configura un local Clúster MongoDB Atlas con datos persistentes. Revise el archivo completo de Docker Compose y cada componente para comprender su propósito y configuración. Para obtener más información, consulte Cree una implementación de Atlas local con Docker.
Archivo Docker Compose
El siguiente ejemplo crea un clúster Atlas local utilizando el
mongodb/mongodb-atlas-local Imagen. El archivo configura la red, monta los volúmenes de datos correctos para inicializar la base de datos y conservar los datos, y los índices de Atlas Search.
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 de archivos
El archivo Docker Compose tiene los siguientes parámetros principales:
servicesDefine los contenedores que se ejecutarán. En este ejemplo, un solo servicio llamadomongodbdefine el servicio MongoDB. Es posible que se requieran otros servicios para que la aplicación funcione correctamente.volumesDefine las ubicaciones de almacenamiento persistente que se pueden compartir entre contenedores. Este ejemplo muestra las ubicaciones de almacenamiento persistente necesarias para el funcionamiento del servicio MongoDB.
Configuración del Servicio
Imagen
image: mongodb/mongodb-atlas-local
Requerido
Este parámetro define la imagen local de MongoDB Atlas. Esta definición usa la última versión de la imagen y equivale a usar la :latest etiqueta. Si su organización requiere el uso de una compilación de imagen específica, puede @sha256:<digest> añadir. Si desea usar una versión específica de MongoDB con las últimas actualizaciones del sistema operativo, use las etiquetas de 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 del contenedor. Debe especificarlo correctamente para que el conjunto de réplicas locales funcione. Este parámetro es necesario para garantizar la comunicación entre los diferentes servicios dentro de la misma red de contenedores Docker. Puede referirse a este contenedor con 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 environment resaltados establecen el nombre de usuario y la contraseña raíz iniciales para el clúster local de Atlas. Para simplificar, en este ejemplo, las credenciales se definen en el propio archivo de Docker Compose, pero se pueden abstraer 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 destacados definen el registro para ayudar a diagnosticar cualquier problema. mongot, que proporciona las capacidades de búsqueda de Atlas, genera el MONGOT_LOG_FILE. Este ejemplo genera los registros mongot 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 emite los registros del runner en el directorio stderr.
Volúmenes
Los volúmenes persisten los datos y la configuración en el contenedor se reinicia.
Inicialización
volumes: - ./init:/docker-entrypoint-initdb.d
Condicional
El parámetro volumes resaltado monta el directorio local init en el directorio de inicialización del contenedor. Normalmente, el directorio init se ubica en el proyecto y, al ejecutar docker-compose up, el proceso busca scripts de inicialización en este directorio. Los tipos de archivo admitidos incluyen:
.jsScripts de shell de MongoDB.shScripts de bash
Por ejemplo, cuando coloca el siguiente script en la carpeta init:
El script recupera un conjunto de datos de muestra de ejemplo.
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 del servicio MongoDB. Los parámetros volumes al final del archivo de Docker Compose indican los volúmenes que otros servicios pueden usar, incluido el volumen db asignado al servicio MongoDB. El volumen db actúa como una ubicación de almacenamiento fuera del contenedor, preservando los datos tras 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
De forma predeterminada, MongoDB almacena sus datos de configuración en el directorio /data/configdb, que persiste de la misma manera que los datos almacenados.
Búsqueda en Atlasmongot ()
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 mongotincluye, que proporciona las funciones de búsqueda en Atlas y búsqueda vectorial en Atlas. De forma predeterminada, mongot almacena los índices en el /data/mongot directorio. Este volumen se asigna, se monta y sus datos persisten entre ejecuciones, al igual que la configuración y los datos almacenados.
Verificar que los procesos estén saludables
La implementación local de Atlas simplifica la configuración del proceso MongoDBmongod () y las capacidades de búsquedamongot) (. Durante la inicialización, estos procesos deben iniciarse y reiniciarse. En algunos casos, el contenedor puede estar ejecutándose, pero el proceso que necesita no está listo. La imagen local de MongoDB Atlas también proporciona una verificación de estado.
Puede utilizar la comprobación de estado para asegurarse de que los procesos de MongoDB y de capacidad de búsqueda, así como también cualquier script de inicialización, estén completamente listos.
En sus 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 hacer una comprobación del estado cuando utilizas Docker Compose.
Usar Docker Compose
Para iniciar el servicio, ejecute el siguiente comando:
docker-compose up
Puede agregar -d para ejecutar el servicio en modo separado.
Para detener el servicio, ejecute el siguiente comando:
docker-compose down
Puede añadir -v para eliminar los volúmenes y borrar los datos. Use esta opción si no desea conservar los datos ni los cambios de configuración, o si desea asegurarse de reiniciar desde un contenedor nuevo.
Para verificar si el servicio está en buen estado cuando ejecuta docker-compose up, agregue el parámetro condition: service_healthy:
api: depends_on: atlas_local: condition: service_healthy
Para obtener más información, consulte Crear una implementación de Atlas local con Docker.
Comentarios
Para hablar sobre clústeres locales de Atlas, consulte el foro de la Comunidad de Desarrolladores de MongoDB. Para obtener ayuda, enviar comentarios o solicitar funciones, consulte el Motor de Comentarios de MongoDB.