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

611
Vistas
Ejecutar mongorestore en Docker una vez que se inicia el contenedor

Estoy tratando de configurar un contenedor que ejecuta MongoDB que se llena con datos usando mongorestore cuando se inicia. La idea es configurar rápidamente una base de datos ficticia para probar y simular.

Mi Dockerfile se ve así:

 FROM mongo:bionic COPY ./db-dump/mydatabase/* /db-dump/

y docker-compose.yml se ve así:

 version: "3.1" services: mongo: build: ./mongo command: mongorestore -d mydatabase ./db-dump ports: - "27017:27017"

Si ejecuto esto con docker-compose up , se detiene por un tiempo y luego aparece un error que dice:

 error connecting to host: could not connect to server: server selection error: server selection timeout, current topology: { Type: Single, Servers: [{ Addr: localhost:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: connection() : dial tcp 127.0.0.1:27017: connect: connection refused }, ] }

Sin embargo, abrir una CLI en el contenedor y ejecutar exactamente el mismo comando funciona sin problemas. Intenté agregar -h con el nombre del contenedor o 127.0.0.1, y no hay diferencia. ¿Por qué este comando no puede conectarse cuando funciona bien una vez que el contenedor se está ejecutando?

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

0

Hay una mejor manera que anular el comando predeterminado: usar /docker-entrypoint-initdb.d :

Cuando se inicia un contenedor por primera vez, ejecutará archivos con extensiones .sh y .js que se encuentran en /docker-entrypoint-initdb.d . Los archivos se ejecutarán en orden alfabético. Los archivos .js serán ejecutados por mongo utilizando la base de datos especificada por la variable MONGO_INITDB_DATABASE, si está presente, o pruebe lo contrario. También puede cambiar de base de datos dentro del script .js .

[ Fuente ]

Así que simplemente escribe ese comando en un archivo llamado mongorestore.sh :

 mongorestore -d mydatabase /db-dump

y luego montarlo dentro junto con el archivo de volcado:

 version: "3.1" services: mongo: image: mongo:bionic ports: - "27017:27017" volumes: - ./mongorestore.sh:/docker-entrypoint-initdb.d/mongorestore.sh - ./db-dump:/db-dump

Ni siquiera necesita un Dockerfile.

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