valores mayor igual diferente consultas comparar clausula avanzadas mongodb docker docker-compose

mayor - ¿Cómo crear un DB para el contenedor MongoDB en el inicio?



diferente en mongodb (2)

En caso de que alguien esté buscando cómo configurar MongoDB con autenticación usando docker-compose , aquí hay una configuración de muestra que usa variables de entorno:

version: "3.3" services: db: image: mongo environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=<YOUR_PASSWORD> ports: - "27017:27017"

Cuando ejecute docker-compose up su instancia de mongo se ejecuta automáticamente con auth habilitado. Tendrás una base de datos de administrador con la contraseña dada.

Estoy trabajando con Docker y tengo una pila con PHP, MySQL, Apache y Redis. Necesito agregar MongoDB ahora, así que estaba verificando el archivo Dockerfile para la última versión y también el archivo docker-entrypoint.sh del MongoDB Dockerhub pero no pude encontrar una forma de configurar un DB predeterminado, usuario / contraseña de administrador y posiblemente auth método para el contenedor de un archivo docker-compose.yml .

En MySQL puede configurar algunas variables ENV como por ejemplo:

db: image: mysql:5.7 env_file: .env environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD}

Y esto configurará la base de datos y el usuario / contraseña como la contraseña de root .

¿Hay alguna forma de lograr lo mismo con MongoDB? Alguien tiene alguna experiencia o solución?


La imagen oficial de mongo ha combinado un PR para incluir la funcionalidad para crear usuarios y bases de datos.

La inicialización de la base de datos se ejecutará cuando no haya nada poblado en el directorio /data/db .

Configuración de usuario administrador

Las variables de entorno para controlar la configuración del usuario "raíz" son

  • MONGO_INITDB_ROOT_USERNAME
  • MONGO_INITDB_ROOT_PASSWORD

Ejemplo

docker run -d / -e MONGO_INITDB_ROOT_USERNAME=admin / -e MONGO_INITDB_ROOT_PASSWORD=password / mongod

No necesita / no puede usar --auth en la línea de comandos ya que el script docker entrypoint.sh lo agrega cuando existen las variables de entorno.

Otra configuración personalizada

El contenedor también proporciona una ruta para implementar scripts de configuración .js o .sh personalizados que se ejecutarán una vez en la inicialización de la base de datos. .js scripts .js se ejecutarán contra test de manera predeterminada o MONGO_INITDB_DATABASE si están definidos en el entorno.

COPY mysetup.sh /docker-entrypoint-initdb.d/

o

COPY mysetup.js /docker-entrypoint-initdb.d/

Un archivo javascript de inicialización simple que muestra el registro y cómo salir con un error (para la comprobación de resultados).

let error = true let res = [ db.container.drop(), db.container.drop(), db.container.createIndex({ myfield: 1 }, { unique: true }), db.container.createIndex({ thatfield: 1 }), db.container.createIndex({ thatfield: 1 }), db.container.insert({ myfield: ''hello'', thatfield: ''testing'' }), db.container.insert({ myfield: ''hello2'', thatfield: ''testing'' }), db.container.insert({ myfield: ''hello3'', thatfield: ''testing'' }), db.container.insert({ myfield: ''hello3'', thatfield: ''testing'' }), ] printjson(res) if (error) { print(''Error, exiting'') quit(1) }