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 Atlas local 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 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 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 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 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 coloca 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 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
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 Atlas Search y Atlas Vector Search. Por defecto, mongot almacena los índices en el directorio /data/mongot. Este volumen está mapeado, montado y sus datos persisten en las 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 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.
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á en buen estado cuando ejecuta docker-compose up, agregue 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.