Antes de dejarlos de.
Bueno, ya que respiren y se vayan de esta sección, quiero mencionarles que en el código fuente que
ustedes tienen en esta clase tienen el enlace que los lleva directamente a nuestro GitHub o amiguitos
donde está el código de esta sección?
Aquí ustedes van a ver que yo añadí un par de cosas, como por ejemplo un par de comandos en el caso
que ustedes quieran hacer, aparte del mil X como se los despliegue solo para referencias, pero recuerden
que eso ustedes lo tienen en la hoja de atajos, por lo menos la referencia para que ustedes sepan donde
está la documentación oficial, que eso es lo más importante de todo y ustedes sepan como usar esa documentación.
Ahora si regresamos aquí a nuestro Docker Field, quiero que pensemos nuevamente ya vamos a verlo en
la siguiente sección la forma ideal para solventar esto.
Pero solo quiero mencionarles a ustedes un par de cosas.
Nosotros tenemos un paso aquí de tomar nuestra primera imagen y si lo hacemos en mil X toma basado en
la arquitectura, que eso es genial.
Luego nos cambiamos de directorio, copiamos el package json, hacemos el npm install, copiamos todo
el código fuente, hacemos el npm run test para verificar el testing, ejecutamos el npm run, la eliminación
de la carpeta de test y la eliminación de los módulos de NO.
Luego hacemos la parte de la instalación de las dependencias de producción.
Ok, todo esto parece estar bien, pero qué pasa cuando algo cambia en nuestra?
Cuando algo cambia en nuestro archivo?
Por ejemplo, si nosotros llegáramos y ahora hacemos una modificación pequeña en el package JSON, que
en este caso sería tal vez solo añadir un script, o cambiamos el nombre o hacemos algo en particular,
algo sencillo.
Entonces todos los pasos que vienen después de este se van a volver a ejecutar literalmente todos esos
pasos.
Es decir, se va a hacer npm install, se va a copiar todo, se va a ser blah blah, blah blah ok,
se va a hacer, se va a realizar todo nuevamente a partir del paso donde sufre alguna modificación,
lo cual técnicamente es algo que ustedes van a querer hacer y está bien que lo haga de esa forma, porque
obviamente hay un cambio.
Es un poco difícil saber dependiendo de la tecnología, si es un cambio importante o no, pero también
puede ser que ustedes estén utilizando el nombre, la versión o algo que se encuentra en el paquete
JSON para construir su imagen.
Entonces por eso está bien que lo haga, pero.
Pero digamos que el código fuente no cambió.
Esta parte no debería de reconstruirse si el código fuente no cambió porque lo único que se modificó
fue el paquete JSON.
Sí, eso fue lo único que se modificó.
Entonces tampoco deberíamos de hacer el testing.
O tal vez este paso hacerlo basado en ciertas modificaciones a algunos archivos.
Entonces, a lo que voy es que nosotros innecesariamente vamos a hacer que nuestro build, el procedimiento
del build, sea más tedioso de lo que realmente debería de ser.
Nosotros podríamos pensar en que todo el paso de las dependencias, es decir, cuando hacemos este paso
para hacer todas nuestras dependencias, podríamos crearnos, como decirlo, un stage encapsulado en
el cual si algo sucede en el package JSON, entonces ahí se vuelve a hacer npm install, pero si nada
cambia en el paquete de JSON, nosotros poder tener en caché todo esa, producir esa imagen y reutilizar
la información creada en este paso que fue la de los módulos de NOT, que era el sus módulos de Node.
También nosotros podríamos pensar de que si hay algún cambio en el testing, entonces ahí es donde vamos
a volver a hacer el paso del testing solo ahí no, pero realmente no solo es en el paso del testing,
sino también es el código fuente, que eso es algo que vamos a ver.
Entonces aquí en este pequeño archivo, nosotros vamos a considerar que podemos tener varias etapas,
por ejemplo, la etapa de la generación de las dependencias de desarrollo, más producción, vamos a
tener una fase en la cual vamos a ocupar hacer el bald.
En este caso no tenemos ningún vial, pero aquí ya realizaríamos después del testing haríamos el vill
justo después de esto, npm run build, por ejemplo, en el caso de que tuviéramos algún tipo de builder,
que esto ya sería propio en Node.
Pero no se preocupe, lo vamos a ver en la próxima clase.
Entonces después de hacer el testing, ahí es donde construimos la aplicación, pero si el testing falla
entonces no construimos nada.
Pero todo este paso de la construcción y el testeo de nuestra aplicación podría ser otro paso para nuevamente
acelerar el proceso de construcción.
Por qué voy a hacer la red?
Bueno, remover estas carpetas y perfectamente yo le puedo decir es que para este siguiente paso no
necesito nada de esto, entonces ni siquiera lo voy a ejecutar.
Solo necesito las dependencias de producción.
Entonces podríamos crearnos un paso en el cual tengamos solo la dependencia de producción y lo que ocupamos
para ejecutar la aplicación.
Todo esto sonará como bien complicado, pero a la larga y al final de la próxima sección.
Bueno, no al final.
Pronto en la próxima sección ustedes van a ver que es más fácil.
Es más fácil o va a ser más sencillo con el multi stage que hacer un solo Docker file con todas las
instrucciones.
Eso lo vamos a ver en la siguiente sección.
Pero recuerden en el material junto a ustedes tienen la documentación de como está ahorita, por si
acaso ustedes quieren volverlo a ver, pero recuerden.
Nuevamente.
Yo les puse esto acá para que ustedes vayan cuando quieran construir sus imágenes, y esas imágenes
necesitan que sean soportadas en múltiples arquitecturas.
Vengan a este punto.
Ok, los veo en el siguiente video.