Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

610
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!