Para esta clase, les voy a pedir que abran la hoja de atajos y vamos a hablar sobre un archivo que
ignore, el cual es similar al Git.
Ignore que si ustedes no saben qué es esto, básicamente el getting nor indica que archivos son los
que ustedes, archivos y directorios no quieren que sean parte del repositorio de git, es decir, que
git no le da seguimiento.
En este caso, el doc ignore le dice al proceso de construcción qué archivos ustedes, por ejemplo,
van a querer copiar y que archivos ustedes no quieren copiar.
Es decir, si yo regreso aquí a la terminal cuando yo hago el copy, es decir, que copie todo lo que
esté en el source a partir de este archivo, todo lo que está aquí, todos esto de aquí lo quiero copiar
y lo quiero pegar en el Working Directory, que sería de slash app.
Desafortunadamente cuando yo hago este comando también copio cosas que no necesito copiar, como por
ejemplo los módulos de Node, porque los módulos no están especializados a la máquina que está corriendo
en este momento.
Esos, esos módulos o quién lo construyó en su momento?
En este caso están especializados a una Mac, porque lo que estoy corriendo es una Mac, ustedes lo
tenían en Windows, entonces están especializados en Windows, etcétera y hay paquetes que instalan
y ejecutan dependencias específicas por sistema operativo, pero en nuestro caso ya hicimos el NPM.
Instale localmente dentro de la imagen en su momento de construcción.
Entonces cuando yo hago este copy estoy sobre escribiendo todo lo que este npm hizo y estoy reemplazándolo
como mis módulos de no, por lo cual estos módulos de no tiene que ser parte de la imagen porque se
construyen aquí, entonces en el Docker.
Bueno, vamos a crearlo porque creo que no lo tengo.
Voy a crear el archivo que ignore y aquí voy a colocar los node modules lo pueden modules, pueden ponerlo
así o pueden ponerlo así.
Yo quería saber cuando son directorios o cuando son archivos.
Ok.
Qué otra cosa no voy a necesitar?
Vamos a ver la parte del test.
Puede ser que más de uno diga.
Bueno, yo quiero excluir el test.
Es decir, si yo lo hago de esta manera.
El problema es que si yo excluyo los test, ok, si yo no paso los test, no va a poder ejecutar este
proceso y va a decir que no hay ninguna prueba realizada ahí.
Ok, entonces los test si los necesito, pero solo para el proceso de construcción, no para el proceso
de ejecución.
Ahí vamos a tener que hacer otra cosa diferente.
Analizamos lo demás que tenemos.
El app lo necesito.
La carpeta esta de Task lo si lo necesito porque ahí tenemos nuestra función recurrente.
A Pepe lo necesito el 12 file.
Es algo que yo no necesito.
Por qué?
Porque estos son las instrucciones para crear la imagen.
No necesito que este archivo sea parte de la imagen como tal.
Luego tenemos el paquete Floppy JSON que esto dice básicamente.
Cómo fue creado este paquete Slack es subjetivo.
Yo los invito a que ustedes lean más al respecto sobre estos archivos, ya sea el log o el package log
para que tengan una idea de cómo es.
Pero esto es un proceso automático que básicamente indica cómo fueron construidos los nuestro dependencias
lo podemos dejar.
Hay gente que lo deja, gente que no, porque igual se va a reconstruir.
Ahí ya queda a discreción de cada quien.
Pero realmente lean al respecto.
Si a ustedes les interesa mucho esa parte, pero no quiero enfocarme mucho en esa parte, no?
Y básicamente eso es lo que quiero ignorar.
Por ahora.
Todo lo demás va a ser parte de mi aplicación.
Entonces vamos a construir nuevamente esta imagen.
Hagamos el Docker.
Qué cosa vale espacio?
Voy a construir una nueva imagen que va a tener otro tag.
Voy a ponerle aquí Docker will back bakers layout back.
Démosle el té para colocarle el tag que va a ser en este caso Clearing Room Ticker.
Vamos a ponerle Tigre o otra versión, cualquier otro nombre back, slash, enter.
Y bueno, básicamente eso era y tengo que poner punto para que busque el doc en el Docker file en este
post donde me encuentro, presionen enter y dejen que esto empieza a crear todo.
Entonces van a ver que hay varios pasos que están en caché.
Hay otros nuevos como por ejemplo este copie porque ya cambió, porque hay un doc ignore que de hecho
el Docker ignore también debería ser excluido.
Ya lo vamos a revisar por ahí y tenemos nuestra nueva imagen ya creada.
Ok, vamos a hacer un docker, un docker ls ls y aquí tenemos nuestro tigre con el 866.
Entonces montemos este contenedor.
Docker Container run.
El 866.
Bueno, será un poquito diferente.
Y también voy a hacerlo de manera.
Entonces, Docker Container Run menús de.
Y básicamente eso es.
Ya se monta, se monta a nuestra imagen.
Está en el cinco y ocho.
Entonces Docker execute Interactive terminal el nombre del contenedor o el as en este caso sería o su
identificador cinco, cinco y ocho.
En mi caso espacio y el comando que quiero utilizar o el ejecutable que quiero ejecutar para correr.
En este caso mi aplicación sería Bin Slash, un shell Command.
Estamos dentro de la imagen.
Hagamos un LS y vamos a ver que aquí pasan varias cosas.
Tenemos los modulos de Node.
Perfecto.
Pero estos son los que se crearon.
No veo el doc ignore.
Tengo el test, tengo los Task, pero me da más de uno y no está el doc ignore.
Voy a hacer un LS menos a L para que muestre todos los archivos y eso incluye los archivos ocultos.
Y aquí van a ver que está oculto.
El doc ignore por defecto.
Esto luego lo oculta, porque cuando esta nomenclatura básicamente es para ocultarlos y posiblemente
ustedes estaban dándole seguimiento a su proyecto, a su repositorios, imagen que es bien común, También
va a aparecer la carpeta de Git, la cual contiene todo el repositorio como ustedes lo tienen, o sea
los cambios.
Entonces voy a presionar o escribir exit y también tenemos que hacer ciertos ajustes a nuestro doc ignore.
Entonces voy a ignorar la carpeta punto git y también voy a ignorar el git.
Ignore el doc que ignore Técnicamente también nosotros ocuparemos ignorar el git ignore, porque ese
archivo no me sirve para nada, porque ese es el archivo propiamente de git.
Y ustedes tendrían que excluir cosas que ustedes saben del programa que están creando.
Qué cosas no son necesarias para pasarlas?
Entonces se los cambios.
Voy a regresar a la terminal limpia y podemos ejecutar el mismo comando de construcción del Docker Belt
y sigamos trabajándolo.
Con el Tigre presionamos Enter, casi todo va a estar en caché y vuelve a construir la nueva imagen.
Ok, entonces nuevamente ya construimos la nueva imagen.
Voy a hacer un image LS Y aquí tenemos la nueva versión.
Bueno, no, vamos a ver, no le puse el tag.
Vamos a hacerlo de nuevo.
Docker Docker Beagle Espacio clearing class Crowd ticker.
Bueno, este es el tag.
Y punto.
Y se me olvidó ponerle el tag que sería Tigre.
Perdón, perdón por eso.
Entonces nuevamente era para ver si estaban poniendo atención.
Docker vale menos para ponerle el nuevo tag y es el tigre.
Presionamos Enter para que lo cree.
Y técnicamente, como esta es la última versión, es muy fácil simplemente presionar la flecha direccional
arriba y poner aquí.
O simplemente no ponerlo, presionar enter.
Y eso también usa el mismo código anterior para crearnos el tag latest docker image ls Y vamos a ver
que el test.
El aire que tenemos aquí.
Y el tigre tienen el mismo.
Aquí tenemos una que todavía anda flotando por ahí, pero por lo menos ya redujimos algún tipo de despacio
en nuestra aplicación.
Pero todavía hay una optimización importante que nosotros tendríamos que hacer.
Voy a borrar todos los contenedores.
Docker container.
Ls va a ver que tengo uno corriendo.
Docker Container RM.
F y voy a borrar el.
Bueno, de hecho no lo borren todavía o si quieren lo pueden borrar y vamos a volverlo a montar con
la última versión.
Y ahora montemos nuestra versión Tigre.
Ok, Docker Container Run Cleaning Slash Crown Ticker es su nombre y es el Aires o el Tigre, que fue
la última versión.
Vamos a colocar esto desplazado de la terminal.
Y ahora ingresemos a esa terminal.
Eso sí, que no lo hagan.
Pero les quiero explicar algo Docker execute Interactive terminal Entremos a el 739 con el comando bin
sh para hacer un shell coman.
Si hago un LS vamos a ver los módulos de Node.
Si yo hago un cd a los módulos de NOT y luego hago un LS, van a ver que aquí tenemos todas otra vez
todas las dependencias de nuestra aplicación que están bien ok.
Está bien que estén, pero nuevamente yo no ocupo, yo no ocupo.
Bueno, no ocupo nada de lo relacionado a Gest, pero definitivamente las copiamos.
Y esto está ocultando nuestra imagen.
Lo que vamos a hacer a continuación.
Ya le voy a explicar la solución.
Una solución que es más elegante de lo que vamos a hacer.
Pero nuevamente quiero hacerlo de manera empírica, como lo haríamos si no conociéramos la Lo que vamos
a ver en la próxima sección, que es un multi stage o un múltiple, o una construcción en múltiples
etapas state o en múltiples stages, podríamos decirlo así en múltiples escenarios, que eso es genial,
ya lo vamos a ver.
Pero técnicamente nosotros podríamos pensar una vez ya ejecutamos nuestro testing y el testing pasa,
ya no ocupo todas las dependencias que tenemos aquí hay un comando de npm para limpiarlo, pero voy
a hacerlo de otra manera.
Voy a borrar los módulos de nodos mediante un comando y los voy a reconstruir únicamente utilizando
los comandos de producción.
Pero eso lo vamos a hacer y también tengo que eliminar todo el testing y eso también lo vamos a hacer
en la próxima clase.
Pero por ahora, por ahora ya redujimos, aunque sea, aunque sea unos cuantos megas, ya redujimos
algo, pero vamos a terminar esto en la próxima clase.