Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

797
Vistas
La recreación del contenedor MongoDB no vuelve a ejecutar el archivo config.js en docker-entrypoint-initdb.d

Tengo un problema con MongoDB. Estoy aprovisionando el archivo config.js a docker-entrypoint-initdb.d en mi archivo docker-compose :

 mongo: image: mongo:latest restart: always ports: - 27017:27017 environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: example MONGO_INITDB_DATABASE: dev volumes: - ./config.js:/docker-entrypoint-initdb.d/config.js - mongodbdata:/data/db

El archivo config.js se ve así:

 db.auth('root', 'example'); db = db.getSiblingDB('dev'); db.approver.insert({"email":"some@email.com,"approverType":"APPROVER"}); db.approver.insert({"email":"someother@email.com","approverType":"ACCOUNTANCY"});

Cuando ejecuto docker-compose up -d por primera vez, todo está bien, las dos entradas se insertan en la base de datos.

Pero luego, quiero agregar una tercera entrada y volver a crear el contenedor:

 db.auth('root', 'example'); db = db.getSiblingDB('dev'); db.approver.insert({"email":"some@email.com,"approverType":"APPROVER"}); db.approver.insert({"email":"someother@email.com","approverType":"ACCOUNTANCY"}); db.approver.insert({"email":"another@email.com","approverType":"ACCOUNTANCY"});

docker-compose up -d --force-recreate --no-deps mongo no pasa nada. El contenedor se vuelve a crear, pero la tercera entrada no está allí.

Ejecutar docker exec -it dev_mongo_1 mongo docker-entrypoint-initdb.d/config.js devuelve:

 MongoDB shell version v4.0.10 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("d44b8e0a-a32c-4da0-a02b-c3f71d6073dd") } MongoDB server version: 4.0.10 Error: Authentication failed.

¿Hay alguna manera de recrear el contenedor para que el script se vuelva a ejecutar? ¿O para ejecutar un comando mongo que volverá a ejecutar el script en un contenedor en ejecución?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En el script de inicio de mongodb, se verifica si se debe realizar la inicialización: https://github.com/docker-library/mongo/blob/40056ae591c1caca88ffbec2a426e4da07e02d57/3.6/docker-entrypoint.sh#L225

 # check for a few known paths (to determine whether we've already initialized and should thus skip our initdb scripts) if [ -n "$shouldPerformInitdb" ]; then ...

así que probablemente se haga solo una vez durante la inicialización de la base de datos y luego, mientras mantiene el estado de la base de datos usando mongodbdata:/data/db , no se inicializará.

Para solucionarlo, puede intentar escribir docker-compose down -v , lo que eliminará los datos de su base de datos y le permitirá ejecutar la inicialización una vez más.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda