Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

197
Visualizações
Proceso de compilación de Docker para interfaces de JavaScript con toneladas de dependencias

Esto no es tanto "mi código es incorrecto" como una pregunta sobre cuál es el mejor enfoque. Estoy creando una pequeña aplicación web basada en Aurelia (usando jspm) y Flask-restful para el backend. Estoy probando cosas diferentes cuando se trata de construir un contenedor Docker para todo esto (por ahora es un contenedor único que contiene tanto el frontend como el backend).

Los 2 enfoques que he probado:

  1. Realice todas las instalaciones de dependencia (npm/jspm) "fuera" del contenedor y simplemente copie todos los artefactos en el contenedor usando la instrucción "COPY" de Dockerfile. Esto funciona bien, pero el "artefacto de compilación" e incluso la lista de todos los archivos es extremadamente lento. Aurelia genera una huella enorme en términos de cantidad de archivos, por lo que la compilación de Docker tarda una eternidad en completarse.

  2. Realice todas las instalaciones de dependencia dentro del contenedor (usando RUN jspm install, etc. en el Dockerfile). Lo bueno de este enfoque es que la computadora host se deja intacta y no tiene ningún requisito excepto git y Docker-engine. El problema es que jspm a menudo falla debido a la limitación de velocidad de git, ya que la mayoría de los paquetes de jspm usan git y no su "propio" repositorio. Para contrarrestar esto, tendría que lidiar con el envío de credenciales de github al contenedor en el momento de la compilación, lo que agrega mucha complejidad.

  3. Un enfoque híbrido donde configuro un "contenedor base" separado usando una etiqueta que incluye "la mayoría" de los paquetes requeridos. Esto, combinado con el n.° 2, me permitiría basar mis compilaciones diarias en una imagen en la que ya se cumplen al menos la mayoría de las dependencias. Tendría que implementar un proceso de compilación separado para mantener actualizado el contenedor base.

Para mayor claridad: mi entorno de desarrollo local está bien, el problema son las compilaciones (muy) lentas en CI, que ponen en cola otros trabajos.

Solo me interesa lo que hace la gente; estoy seguro de que no soy el único que se ha enfrentado al problema de los tiempos de compilación excesivos con Docker y, especialmente, con los marcos frontend con gran cantidad de archivos.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Estoy a favor del enfoque de contenedor en "cascada" (que es una de las mejores características de Docker); esto es básicamente lo mismo que su enfoque híbrido. Aunque nada le impide usar varias imágenes en secuencia en lugar de un solo contenedor base, por supuesto.

Pones en cascada tus compilaciones en función de la jerarquía de tus dependencias. También puede reducir el tiempo de compilación de cada imagen acoplable en la cadena, acelerando sus compilaciones continuas.

La desventaja es que esto introduce más complejidad, ya que requiere una nueva canalización de compilación para cada imagen separada.

Para archivos transitorios como paquetes npm, también prefiero construirlos dentro del contenedor; esto hace que sus imágenes y la configuración de compilación sean más portátiles, aunque normalmente mantengo git fuera de los contenedores y dejo que el contenedor de compilación maneje eso, esto mantiene sus credenciales de git más seguras.

Dices que tus compilaciones son lentas, pero ¿por qué es eso necesariamente un problema? ¿No debería necesitar estar reconstruyendo todo el tiempo una vez que haya configurado los entornos? Simplemente use montajes de volumen para desarrollar contra contenedores en ejecución y deje que el proceso de compilación se inicie en segundo plano cada vez que haya una combinación (o lo que sea) todo manejado por su servidor de compilación.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda