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

433
Views
Cómo manejar node_modules con docker-compose en un proyecto monorepo

Estoy ejecutando un proyecto monorepo de Node.js usando espacios de trabajo de hilo. La estructura del archivo se ve así:

 workspace_root node_modules package.json apps appA node_modules package.json appB node_modules package.json libs libA dist node_modules package.json

Todas las aplicaciones son independientes, pero todas requieren libA

Estoy ejecutando todas estas aplicaciones con docker-compose. Mi pregunta aquí es cómo manejar correctamente todas las dependencias, ya que no quiero que las carpetas de node_modules se sincronicen con host. Localmente, cuando ejecuto yarn install en la raíz del espacio de trabajo, instala todas las dependencias para todos los proyectos, completando los diferentes node_modules . En docker-compose, idealmente cada aplicación no debería estar al tanto de otras aplicaciones.

Mi enfoque hasta ahora, que funciona pero no es ideal y no es muy escalable.

 version: "3.4" services: # The core is in charge of installing dependencies for ALL services. Each service must for wait the core, and then # just do their job, not having to handle install. appA: image: node:14-alpine volumes: # We must load every volumes for install - .:/app # Mount the whole workspace structure - root_node_modules:/app/node_modules - appA_node_modules:/app/apps/appA/node_modules - appB_node_modules:/app/apps/appB/node_modules - libA_node_modules:/app/libs/libA/node_modules working_dir: /app/apps/appA command: [sh, -c, "yarn install && yarn run start"] appB: image: node:14-alpine volumes: # We must load every volumes for install - .:/app # Mount the whole workspace structure - root_node_modules:/app/node_modules - appB_node_modules:/app/apps/appB/node_modules working_dir: /app/apps/appB command: [sh, -c, "/scripts/wait-for-it.sh appA:4001 -- yarn run start"] # And so on for all apps.... volumes: root_node_modules: driver: local appA_node_modules: driver: local appB_node_modules: driver: local libA_node_modules: driver: local

Los principales inconvenientes que veo:

  • El servicio appA es responsable de instalar las dependencias de TODAS las aplicaciones.
  • Tengo que crear un volumen para cada aplicación + uno para los nodos raíz_módulos
  • Todo el proyecto está montado en cada servicio, aunque estoy usando solo una carpeta específica

Me gustaría evitar una compilación para el desarrollo, ya que debe hacerse cada vez que agrega una dependencia, es bastante engorroso y lo está ralentizando.

over 4 years ago · Santiago Trujillo
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!