Es momento de comenzar nuestro camino en la creación de imágenes.
El proceso de creación de una imagen.
La verdad es que tiene un nombre bien interesante, porque lo que vamos a querer hacer para construir
una imagen es obviamente tener algún código fuente o alguna aplicación que nosotros queremos localizar.
Y que es eso?
Localizar no es más que construir una imagen basado en nuestro código.
Eso es básicamente.
Pero aquí también ustedes tienen varias descripciones que yo les puse en el glosario.
Por ejemplo, realizar una aplicación es el proceso de tomar un código fuente, generar una imagen lista
para montar y correrla en un contenedor.
Para lograr esto ocupamos crear un archivo llamado Docker File.
El Docker file no es más que un archivo de texto con las instrucciones que nosotros le vamos a decir
a Docker para que construya esa imagen.
Se puede ver como un blueprint o un plano para su construcción.
Si ustedes hacen clic aquí, nos lleva a la documentación oficial de Docker para que puedan leer más
al respecto.
Porque este es un tema bastante amplio.
Hay muchas cosas que podemos hacer y esto también tiende a ser algo abrumador para las personas que
ingresan por primera vez.
Y es algo difícil de tratar de comprender todo de un solo.
Es decir, muchas veces las personas lo que hacen es ok, bueno, este es el Docker file, leélo, cámbialo,
modificarlo y uno dice bueno, y esto qué es?
Si nosotros analizamos, por ejemplo, otras imágenes, digamos la de PostgreSQL, no hace falta que
vengan, no hace falta que vengan aquí, solo es una explicación.
Estas son las capas, porque cada paso que ustedes van a ver aquí es una instrucción que vamos a colocar
en el Docker File.
Adicionalmente, cada una de estas estos pasos que estamos viendo aquí, por ejemplo, al añadir un
archivo, un comando bash, luego se ejecuta esta línea y así sucesivamente.
Cada una de esas líneas va creando lo que se conoce como layers.
No sé si ustedes han visto y yo lo había mencionado, que cuando estamos descargando a una imagen lo
que se descargan son layers.
Esos layers van a permitir su reutilización en el caso de que otra imagen usar al mismo layer, entonces
va a permitirnos reutilizarlo y es bastante útil.
Ya vamos a hablar más al respecto.
Pero todos estos pasos van a haber Configuración de variables de entorno, ejecución de un shell, variables
de entorno, definición de un volumen Copiar información de un lado a otro, un entry point, la exposición
del puerto, el comando de ejecución, todo estos, todo esto son una serie de pasos para la creación
y ejecución de esta imagen.
Entonces, yo no pretendo que ustedes el día 0 se memoricen y sepan que hace todo esto, porque eso
no pasa así.
Si es la primera vez que ustedes van a ver un perfil y si alguien les pasó algún docker fail, ustedes
se van a asustar porque van a ver todo ese montón de comandos y no tienen la menor idea que hace.
Qué cosa?
Entonces?
Mi objetivo es que empecemos desde absoluto cero comprendiendo primero cómo funciona una pequeña aplicación
y luego vamos a ir creciendo en complejidad.
Entonces vamos a crear un Docker, un Docker fácil, súper sencillo.
Y en base a ese perfil vamos a ir aprendiendo más y más y más y más y más.
Entonces vamos a empezar de lo más básico y luego vamos creciendo.
Para las personas que ya saben sobre Docker, posiblemente van a sentir esto bastante básico, pero
eventualmente vamos a llegar a hacer inclusive construcciones en múltiples pasos, entre otras cosas,
y después vamos a llegar al punto de crear diferentes imágenes para diferentes arquitecturas.
Entonces yo sé que eso de arquitectura, de procesadores, yo sé que es bastante complicado todo esto,
pero nuevamente vamos a ir caminando.
Lo primero que les voy a pedir es que ocupamos crear una aplicación para que nos sirva para obviamente
hacer algo, no?
Porque voy a crear una imagen y la imagen tiene que hacer algo.
Entonces eso es lo que quiero hacer.
Creemos un archivo en nuestra carpeta de Docker que se va a llamar Cron ticker.
Ya van a ver porque es Chrome.
Por qué Chrome?
Tomen esta carpeta y ábranla en Visual Studio Code.
Y aquí adentro.
Voy a quedarme.
Bueno, todavía no vamos a abrir la terminal también antes de hacer cualquier cosa.
Ahora se la terminal, la de Windows, lo que sea.
Y naveguemos a la carpeta de este proyecto.
Que se llama Crowne Ticker.
Dejémoslo caer aquí.
Enter.
Y recuerden que nosotros tenemos instalado no de manera global en nuestro equipo.
Nosotros lo instalamos en el inicio del curso y se acuerda que yo le dije vamos a usar uno.
No tienen que ser expertos en no necesita saber Node no es un curso de Node, pero obviamente quiero
que usemos esto para crear unas aplicaciones rápidas y sencillas y correr otras cosas.
Entonces tiene que tener instalado Node en su computadora, no como una imagen, se podría ser como
una imagen, pero no quiero hacerlo así.
Ok.
Entonces tengan instalado en Node escriban el siguiente comando npm init.
Obviamente en esta carpeta de crónica no presionen enter y presionen enter enter hasta que cree este
archivo llamado el package JSON.
Si regresamos a el proyecto en el estudio van a ver que aquí ya aparece el paquete JSON con el nombre
de nuestra nuestra aplicación o el nombre del paquete y la configuración básica de nuestra aplicación.
No hicimos nada, todavía no tenemos nada.
Dentro de este archivo voy a crearme una uno nuevo o dentro de escritorio un nuevo archivo llamado App
JS en el cual voy a poner un log que diga Hola mundo, punto y coma.
Grabe los cambios para ejecutar esta aplicación.
Nosotros vamos a irnos a la terminal y escribamos node espacio app.
JS Ok, el js es opcional, pero voy a ponérselo a PPP.
JS Al presionar ENTER se va a ejecutar ese archivo y tenemos nuestro.
Hola mundo, súper sencillo, bastante bastante auto explicado espero.
También nosotros podemos venir aquí en la parte de los scripts, poner una coma al final y escribir
start.
Asegurense ponerlo entre comillas y vamos a mandar a llamar el node espacio app.
JS y graves los cambios con definir este script.
Lo que le estoy diciendo ahora es que mi aplicación va a tener este comando que va a iniciar lo que
es lo que acabo yo de ejecutar, que es app.
Aquí yo después puedo agregar ciertas banderas variables de entorno e x cantidad de cosas que yo puedo
hacer aquí, pero por ahora dejémoslo con el start.
Si yo quiero llamar ese comando, voy a hacer npm de new package manager start.
Esto va a mandar a llamar este script.
Que se llama estar en el cual corre nuestro Hola mundo!
Ok, hasta este momento espero que nadie se esté quedando.
Bastante sencillo, pero obviamente hacer esta aplicación, eso que tenemos aquí es súper aburrido este.
Hola mundo, no quiero hacer eso.
Si les voy a pedir que por favor vayan a material adjunto y yo les dejo.
Es un enlace que los lleva a este paquete que se llama Cron, que es muy similar a como funcionan las
tareas programadas basado en diferentes horas, minutos y segundos.
Es un proceso de Linux en el cual ustedes pueden programar que cada segundo suceda algo, cada minuto
suceda algo, cada hora suceda algo, cada día de la semana suceda algo.
Y esto es muy utilizado para hacer procedimientos, por ejemplo, procesos de sincronización.
Ustedes quieren que cada segundo, cada minuto, cada hora, cada X cantidad de tiempo se ejecute un
proceso.
Esto es muy fácil de utilizar.
Entonces van a ver que aquí hay un comando que dice npm store no crunch.
Hagan clic aquí, lo copian.
Vamos a regresar a nuestra terminal donde tenemos nuestro proyecto y van a pegar ese npm y no crunch
es npm install not chrome.
Presionen enter y esto va a descargar el paquete y lo va a colocar en nuestro proyecto.
Van a notar que ahora aquí en la parte de las dependencias tenemos uno Crom, que es esta versión y
también tenemos este archivo o directorio mejor dicho que se llama los modulos de Node en el cual contiene
todo lo que yo necesito o lo que no creo necesita para poder ejecutarse.
Ok, Voy a regresar a la app.
Y navegador web también.
Les voy a pedir que se copien este pequeño bloque de código que tiene, que es una definición del ejercicio,
copien, lo revisemos a Visual Studio Code y en el app peguen ese código.
Hagamos unas modificaciones.
Aquí voy a escribir inicio aquí coloquen la cantidad de asteriscos que yo le voy a pedir.
Es decir, van a poner 123456 asteriscos.
Cada asterisco significa ya sea el primero, significa segundo minuto, hora del mes, día, el mes
y día de la semana, y ahí pueden ver la definición del mismo.
Yo quiero que esto se ejecute cada segundo.
Entonces podría poner uno -59, por ejemplo.
Y aquí tarea corriendo cada second, por ejemplo.
Voy a grabar los cambios, voy a cambiar este bar por const, porque no debemos de estar usando VAR
y lo dejamos así.
Gánense los cambios.
Ejecutemos nuevamente la aplicación mediante el npm start.
Presione enter, inicia la aplicación y cada segundo va a estar emitiendo este mensaje.
Cada segundo lo está emitiendo.
Y esto es por ahora la aplicación que yo quiero que nosotros tengamos.
Cancelen con control C Para finalizar este ejercicio, o sea para empezar a realizar la aplicación,
yo quiero crearme una bandera que me diga cuántas veces se ha hecho un tick.
Voy a cambiar esto y que diga tick cada cinco segundos y voy a colocar y voy a hacer la impresión aquí
de mis tags la cantidad de veces.
Luego voy a hacer times más, más para ir acumulando cada vez que se llama este proceso y segundos.
Segundos y para que esto se imprima cada cinco segundos, o mejor dicho, que se ejecute cada segundo
cinco, diez, 15 o 20, 25.
Voy a dividir esto entre cinco.
Yo sé que la sintaxis es algo rara, pero esto es propio de Cron.
Gánense los cambios.
Vamos a volverlo a ejecutar.
Flecha de arriba.
Presionamos Enter y esto se va a empezar a ejecutar.
Va a imprimir nuestro mensaje cada segundo cinco cada segundo, diez cada segundo, 15 cada segundo.
20 de el sistema del horario o del reloj del sistema operativo.
Eso es lo que significa lo que estamos haciendo.
No es cada cinco segundos, es en el segundo, cinco, en el segundo, diez en el segundo, 15 segundos.
Twenty.
No importa.
Pero cada cinco segundos, podríamos decirlo.
Tenemos nuestro tic y esta es nuestra aplicación.
Imagino que más de uno va a poder notar algún uso bastante útil para esto.
Por ejemplo, ustedes tienen un proceso que tienen que sincronizar cada cinco segundos o cada hora,
cada minuto, o quieren ejecutar una tarea.
Lo pueden hacer de esa manera y pueden crear tantas entradas de este itinerario como ustedes necesitan.
Por ahora dejémoslo así.
Cancelemos la aplicación con control C y nos vemos en el próximo vídeo donde vamos a empezar a revisar
esta pequeña aplicación.