No sé eso que les voy a mostrar, solo lo voy a hacer una vez o pocas veces.
Este es el contenedor que tengo corriendo con mi imagen cromática.
Si ustedes hacen click por acá van a ver que tiene view details copy, docker run tienen open terminal
y si ustedes lo hacen open en terminar van a ver que nos ingresa directamente a que ustedes tomaran
el contenedor y ejecutara en la terminal interactiva, etc etc y también tiene una opción de open in
external terminal.
Esto es para que simplemente ingrese todo lo demás y ejecuta el comando de Docker Interactive terminando
ustedes ya saben que es lo que hacen, entonces es conveniente.
Pero nuevamente quiero que ustedes siempre sepan que lo que estamos haciendo ahora aquí, si yo hago
un LS, vamos a ver las imágenes y una vez ya se construye la imagen, no tiene sentido que tenga mis
testing o mi testing ahí.
Y también yo tengo que especializar los módulos, no para que utilice únicamente los que son necesarios
para producción, no la dependencias de desarrollo.
Y eso es lo que vamos a terminar de arreglar acá.
Entonces hagamos un Docker Image Docker Container ls y vamos a eliminar ese contenedor que está corriendo.
Docker container RM F739.
Regresemos a Visual Studio Code ok?
Nuevamente, lo que les voy a enseñar es algo que empíricamente podrían tener mucho sentido y es bastante
útil que ustedes también lo sepan, pero realmente la solución a este problema va a ser más especializada
cuando una solución mejor va a ser cuando nosotros no movamos a las construcciones en múltiples stats
o stages en múltiples escenarios.
Es decir, vamos a tener un escenario para construir las dependencias o para hacer la dependencia.
Luego otro escenario para hacer la parte del testing y luego otro escenario para que es lo que va a
ejecutar la aplicación en producción.
Luego vamos a ver eso en la próxima sección, pero por ahora nuevamente olvídense que eso existe porque
digamos que no sabemos que existe.
Ok, entonces una vez ya pasa el testing, que si duda un error, entonces ahí ya se detiene la construcción.
Yo puedo eliminar, voy a poner aquí eliminar, que se yo, dependencias innecesarias, eliminar archivos,
archivos y directorios no necesarios.
O sea, no son necesarios en producción.
Ok.
Qué es lo que voy a hacer?
Voy a ejecutar un comando nuevamente.
Similar a lo que hemos hecho acá.
Necesito ejecutar un comando.
Y aquí, básicamente es como que ustedes vayan a la terminal o al git bash o al o al shell y escriban
literalmente esos comandos.
Si yo vengo acá y hago un RM que es remove, ya lo hemos visto, es con Docker, container RM, Docker,
image RM esto es remove y hemos visto que le ponemos F para que lo haga forzado.
Esto es básicamente lo mismo, porque aquí se inspira todo.
Pero también voy a colocar una R esta R cuando ustedes están eliminando mediante un comando es remove.
Esto es recursivo, es decir, si hay directorio dentro de directorio, dentro de directorio, borra
todos los directorios y estos son comandos bastante delicados.
Tengan cuidado.
Y el FS también es forzado, que es que no les va a preguntar a ustedes si están seguros de que desea
borrar.
No borre todo eso.
Qué es lo que quiero eliminar?
Voy a eliminar la carpeta de test de tests esta que tengo aquí, porque ya no tiene razón de existir.
Ya no voy a borrar nada más.
Y adicionalmente yo puedo crear otro run para eliminar los node Modules.
Y por qué lo voy a eliminar?
Porque quiero reconstruirlo de nuevo, pero únicamente los de producción.
Porque esto se instala, esto instala toda la dependencia.
Solo quiero instalar la de producción, pero técnicamente yo puedo colocar esto en una sola, en una
sola capa, en un solo layer.
Entonces eso es bien común que ustedes vean que empiezan a poner and tal cosa, aun tal otro comando
tan bueno y otro comando.
Y eso es básicamente lo que está sucediendo acá es ejecutar este comando.
Cuando termines, ejecuta este otro comando, cuando termine se ejecuta ese otro comando y así sucesivamente.
Ok, ya eliminamos los módulos de nodo, pero son necesarios para hacer la instalación.
Entonces ahora voy a volver a ejecutar el comando de npm install menos para que únicamente instale las
dependencias de producción, únicamente las de.
De producción.
Y luego ya puede ejecutar eso.
Entonces añadimos un par de pasos más grandes en los cambios.
Voy a regresar a la terminal Flecha Direccional arriba.
Busquen el comando de creación Docker Container.
Bueno, el run es el Vault.
Ok, aquí tendríamos Docker container Build.
Voy a ponerle otro nombre.
Como qué sé yo, Pantera, porque yo sé que este es el último nombre que le estoy dando, pero nuevamente
otro time.
O pueden poner el número de versión que eso también tendría sentido.
Entonces Docker vale menos pantera.
Presionamos Enter para que empiece a hacer la creación de la imagen.
Se empieza a crearla.
Hay muchos pasos que están en caché porque no han cambiado al mismo layer.
Pero viene un paso siete de ocho que es run.
RM borra esto y luego hace el NPM y exporta la nueva imagen.
Entonces Docker image ls Y aquí deberíamos de tener pantera.
Ok?
Con su nuevo jazz y todo lo demás, montemos en un contenedor Docker container de Clearing Slash con
ticket, dos puntos con el tag pantera.
Y eso es básicamente examinemos Docker, Container Docker, Execute, Interactive, Terminal, Slash,
Bean, Slash.
Qué cosa ese.
Y nuevamente y aquí me faltó especificar.
Me faltó especificar la.
La imagen que.
Bueno, la imagen que está montada en el contenedor que tiene Iris de a cinco.
Ahora si.
Una vez aquí adentro, si hacemos el LS, vamos a ver que ya no está lo del testing, que es una buena
señal.
Y si abrimos los módulos de no VCD a los módulos de Notes LS, vamos a ver que todavía queda.
Hay muchas maneras de menor dependencias, pero todavía tenemos algunas que están por ahí.
No hay.
Esto no es tan crítico porque esas carpetas están vacías.
Bueno, la mayoría de esas si yo hago un cd a Chest y luego hago un LS van a ver que están vacías,
no tiene nada.
Pero podríamos dejarlo de esa manera, o si quieren ustedes lo pueden borrar, pero la verdad son carpetas
vacías que no incrementan nada el peso.
Entonces si.
Lo que image ls y van a ver que de igual manera esto pareciera algo desconcertante, pero se incrementó
en un mega, se incrementó tal vez en E, o sea, tenemos 232 y la imagen inicial obviamente donde no
teníamos nada, el testing era mucho menor, pero porque está de un peso similar, a pesar de que ya
no tenemos las dependencias de desarrollo ni nada de eso, es porque nosotros también tenemos muchas
leyes adicionales ahora.
Entonces eso es parte del proceso.
Ok, ok, está mejor que esta y es un poco más fácil y digerible esta y también mi imagen no tiene lo
que yo no necesito, que también esta imagen en teoría está mejor, aunque peso un mega más, pero hay
varios pasos que nosotros podemos optimizar por ahora.
Por ahora quiero que ustedes miren lo que acabamos de hacer.
Creo que ustedes ya pueden leer mejor este Docker find, que es lo que hace esta línea.
Díganle ustedes en su cabeza Ok, esta línea hace Ah, correcto.
Qué hace esta línea?
Ok, esta línea es especifica el directorio activo en el cual voy a estar trabajando.
Qué hace esta línea?
Ok, díganlo en su cabeza.
Ok, Esta línea copia todos los archivos definidos acá.
El Working Directory.
Perfecto.
Esta línea que hace estos específica de Node instala todas las dependencias.
Este copy lo que está haciendo es que copia todo lo que está en mi proyecto basado en el par relativo
del Docker file.
Y lo pega.
En dónde?
En el Working Directory, que en este caso es app excluyendo todo lo que se encuentra en el doc.
Ignore a ok, ok.
Qué hace el npm run test?
Bueno, este ejecuta mi testing perfecto, ejecuta el testing.
Luego que hace este comando o este comando tal vez es un poco más extraño, pero Ok, ejecuta un comando
en la consola.
Eso es todo lo que tengo que saber.
Un vasco man, que es lo que hace RM remueve recursivo forzado la carpeta test recursivo forzado los
módulos de nuevo, luego lo reconstruyo, pero únicamente las dependencias de producción.
Ok.
Y al final este es el comando con el cual vamos a iniciar nuestra aplicación.
Ok, todo lo que tenemos aquí, posiblemente si lo hubiéramos tratado de digerir todo de un solo hubiera
sido un poco más complicado, pero ya sabemos el por qué de cada una de esas líneas y ustedes van a
poder leer esos archivos Docker Files más fácilmente.
Posiblemente todavía faltan muchos comandos y todavía tenemos otras cosas que hacer.
Tenemos cosas adicionales que agregar que vamos a ir viendo todavía en la próxima sección, pero por
ahora hemos aprendido muchas cosas nuevas.
Recuerden en la hoja de atajos que yo les facilité.
Busquen la parte del Docker File.
Hay otros comandos con diferentes cosas que todavía no hemos explicado.
Por ejemplo, la plataforma que es interesante y lo vamos a hablar de Environment, que eso tiene mucho
sentido.
Si ustedes quieren poner una variable de entorno a la hora de crear algo o si ustedes están utilizando
mucho, por ejemplo, es la app, es la app por todos lados.
Podríamos crearnos una variable de environment en este momento de construcción para que sea más fácil
de tenerlo a la mano.
Luego tenemos aquí la parte de los volúmenes que todavía no hemos hablado.
Esto es otra manera de agregar archivos propiamente.
Similar al copy.
Aquí tenemos el copy y por aquí tenemos otras cosas.
El copy lo vimos ex pose 3000.
Esto ayuda a.
Se acuerdan que teníamos ciertas imágenes que exponían un puerto?
Esto es algo que lo ayuda a exponerlo abiertamente para que ustedes y otras personas sepan adicionalmente
qué puertos exponen y pueden poner X cantidad de puertos que ustedes quieran exponer separados con espacio
y el comando que es el utilizado cuando se monta la imagen para correr.
Esto va a ser lo que va a intentar ejecutar la imagen cuando sea mostrada en un contenedor.
Luego también se recomienda de vez en cuando reconstruir las imágenes con el Docker no cas, seguido
del tag de la imagen.
Hay muchas cosas interesantes que tenemos que hacer aquí y todavía nos falta un gran camino.
Pero todavía, todavía en esa sección no hemos terminado.
Obviamente quiero subirla a nuestro blog el jueves y lo vamos a hacer muy pronto o en la próxima clase.
Si quieren usted lo puede hacer de tarea, etcétera Pero realmente lo que me interesa a mi que nos enfoquemos
es en la parte de las arquitecturas, porque si ustedes están trabajando con una Mac o una computadora
que en este caso tiene una arquitectura a AMP.
64, que es la mía, sólo van a ver esa o sólo van a ver una arquitectura?
Pero en la vida real ustedes no sólo tienen una arquitectura.
Nuevamente regresa en el caso de PostgreSQL.
En el caso de PostgreSQL, PostgreSQL en el caso de PostgreSQL y otras imágenes van a ver que la misma,
el mismo Lares tiene diferentes imágenes que están especializadas para diferentes arquitecturas y diferentes
sistemas operativos.
Esto es algo que les voy a enseñar a hacer en las próximas clases, así que dejemoslo así y nos vemos
en el siguiente vídeo.
En el siguiente vídeo.
Técnicamente, lo que quiero hacer es nuevamente subir esto.
Ustedes van a subir esas imágenes de tarea.
También quiero que ustedes hagan un ejercicio para nombrarlas y en la clase, después de eso vamos a
empezar a trabajar con múltiples arquitecturas aquí.
Entonces lo veo en el siguiente vídeo.