Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
1 00:00:05,950 --> 00:00:12,490 Imagínense ustedes que esa es una aplicación que en lugar de ser este blog, está utilizando cierta 2 00:00:12,490 --> 00:00:19,270 comunicación con algún API, la cual se encarga de leer esa API o esa base de datos y hace la inserción 3 00:00:19,270 --> 00:00:23,260 en otra base de datos como para hacer una sincronización o un manual o algo así. 4 00:00:23,700 --> 00:00:28,960 Imagino que este procedimiento o este programa a más de uno le va a ser bastante interesante. 5 00:00:28,960 --> 00:00:30,040 Y es muy sencillo. 6 00:00:30,670 --> 00:00:36,130 Todo este procedimiento digamos que lo ocupamos montar y desplegar en un servidor y aparte ocupamos 7 00:00:36,130 --> 00:00:40,390 mantener las versiones, porque puede ser que esta aplicación sea muy grande o que tenga diferentes 8 00:00:40,390 --> 00:00:45,490 procesos, o que van a añadir más procesos, qué sé yo, ustedes podrían darle el uso a esta aplicación 9 00:00:45,490 --> 00:00:51,040 como ustedes necesiten, pero digamos que en la vida real nosotros ocupamos crearnos una imagen para 10 00:00:51,040 --> 00:00:56,800 simplemente montarla y ejecutarla, y si después sucede algún cambio, yo pueda mantener mediante versiones 11 00:00:56,800 --> 00:01:02,310 fácilmente cambiar la versión, actualizarla y así sucesivamente, por lo cual tiene mucho sentido de 12 00:01:02,350 --> 00:01:07,210 que yo quiera crear esta aplicación como una imagen de Docker para que simplemente yo llame Doc Run 13 00:01:07,240 --> 00:01:08,980 el nombre de mi imagen y se acabó el asunto. 14 00:01:08,980 --> 00:01:14,410 Ya estoy corriendo ese procedimiento sin preocuparme de mis dependencias, que esas dependencias sería 15 00:01:14,410 --> 00:01:16,180 en este caso, no cron. 16 00:01:16,570 --> 00:01:24,130 Aparte sería no como tal, porque obviamente puede ser que mi servidor yo no tenga node instalado, 17 00:01:24,130 --> 00:01:29,800 entonces si yo no tengo Node instalado es imposible ejecutar el comando de node app porque va a decir 18 00:01:29,800 --> 00:01:35,080 que no, no se reconoce como comando interno o externo, entonces no voy a poder ejecutar la aplicación, 19 00:01:35,230 --> 00:01:40,750 entonces tengo varias dependencias y aparte no Chrome tiene otras dependencias que necesita como Yuyo 20 00:01:40,750 --> 00:01:47,230 ID y este bin ok bueno, tiene esas dependencias en general, no el yuyo ID básicamente. 21 00:01:47,710 --> 00:01:53,200 Entonces también hay una definición de cómo fue construido ese archivo, entre otras cosas, pero la 22 00:01:53,200 --> 00:01:55,930 verdad es que todo lo de los módulos de no se maneja de manera automática. 23 00:01:57,200 --> 00:01:59,060 Entonces todas esas son mis dependencias. 24 00:01:59,060 --> 00:02:04,700 Y obviamente no sólo es Node, sino que también yo necesito un sistema operativo en el cual va a correr 25 00:02:04,700 --> 00:02:05,540 el procedimiento. 26 00:02:05,540 --> 00:02:11,630 Porque si ustedes se fijan, yo no monté un apache o un servidor Apache para phpMyAdmin. 27 00:02:11,930 --> 00:02:15,500 Yo no sé, yo no monté ningún servidor de Node para correr mi aplicación de Pokémon. 28 00:02:15,770 --> 00:02:21,560 Yo no monté nada de eso, porque esas imágenes proporcionan todo lo que nosotros necesitamos. 29 00:02:22,010 --> 00:02:28,280 Es lo mismo que nosotros tenemos que hacer y tenemos que decirle a Docker cómo crear todo lo que necesita 30 00:02:28,280 --> 00:02:30,410 la aplicación para poderse ejecutar. 31 00:02:31,220 --> 00:02:35,030 Entonces vamos a comenzar ese camino, ese camino de la localización. 32 00:02:35,210 --> 00:02:38,330 Todo comienza con un archivo llamado Docker File. 33 00:02:38,960 --> 00:02:42,260 Este Docker File imagino que ustedes ya lo habrán visto más de una vez. 34 00:02:42,260 --> 00:02:46,130 Y si no lo han visto, bueno, si ya lo han visto o simplemente se han asustado con un montón de instrucciones. 35 00:02:46,430 --> 00:02:48,270 Y si nunca lo han visto, tranquilo. 36 00:02:48,290 --> 00:02:52,790 Vamos a empezar paso a paso, porque para mí es importante que ustedes comprendan cada cosa que vamos 37 00:02:52,790 --> 00:02:58,610 a ir haciendo y vamos a comenzar desde lo más pequeño y luego vamos a llegar hasta múltiples pasos de 38 00:02:58,610 --> 00:02:59,450 construcción. 39 00:02:59,780 --> 00:03:05,750 También vamos a crear múltiples versiones basados en diferentes arquitecturas de procesador, que eso 40 00:03:05,750 --> 00:03:07,760 es algo bastante útil que tenemos que saber. 41 00:03:08,120 --> 00:03:09,830 Y así vamos a ir creciendo en complejidad. 42 00:03:10,220 --> 00:03:12,460 Entonces todo comienza con el primer paso. 43 00:03:12,470 --> 00:03:17,930 Todo esto, todo lo que vamos a colocar en este Docker file no son más que instrucciones que nosotros 44 00:03:17,930 --> 00:03:20,900 vamos a empezar a seguir a Docker para que construya la imagen. 45 00:03:21,320 --> 00:03:27,160 Si ustedes buscan aquí PostgreSQL en otros Docker punto com, no hace falta que lo hagan solo. 46 00:03:27,170 --> 00:03:29,030 Pues miren esta explicación. 47 00:03:29,330 --> 00:03:34,580 Cada una de estas líneas que ustedes están viendo aquí es una instrucción de Docker File. 48 00:03:34,680 --> 00:03:38,180 Básicamente aquí le dice que se agregue ciertos archivos. 49 00:03:38,190 --> 00:03:43,830 Un comando que se ejecutó, un shell command, otro shell toman una definición de variable de entorno, 50 00:03:43,830 --> 00:03:47,780 o sea el comanche, el command variable de entornos, el comanche, el comanche, el comando variable 51 00:03:47,780 --> 00:03:53,420 de entornos, el comanche, El command más variable de entornos Shell commands La definición de un volumen 52 00:03:53,420 --> 00:04:00,770 Copiar ciertos archivos, un punto de entrada, un stop signal y tenemos la exposición de un puerto 53 00:04:00,770 --> 00:04:02,240 y el comando en el cual se ejecuta. 54 00:04:02,240 --> 00:04:04,940 No pretendo que ustedes sepan qué es lo que hace cada una de estas cosas. 55 00:04:04,940 --> 00:04:06,170 No, no es la idea. 56 00:04:06,500 --> 00:04:13,340 Pero cada una de esas instrucciones va creando diferentes layers o capas que le van a decir a Docker. 57 00:04:13,340 --> 00:04:17,330 No sé si ustedes se acuerdan cuando descargamos una imagen que había como varias descargas. 58 00:04:17,630 --> 00:04:22,700 Esa varias descargas simultáneas son las capas que está descargando y así funciona básicamente, lo 59 00:04:22,700 --> 00:04:26,510 cual ayuda mucho saber y reutilizar capas en el caso de que no haya cambiado algo. 60 00:04:26,510 --> 00:04:27,980 Pero ya vamos a ver eso muy pronto. 61 00:04:28,100 --> 00:04:32,990 Olvídense de lo que acabo de decir, escriban node y eso sí, háganlo, por favor, vengan conmigo, 62 00:04:32,990 --> 00:04:37,430 vamos a irnos a Load, seleccionen la imagen oficial que esta es súper popular. 63 00:04:37,430 --> 00:04:42,920 Más de 1 billón de descargas Es estúpido o es estúpida la cantidad de descargas que tiene? 64 00:04:43,580 --> 00:04:47,450 Y luego busquen la parte de Bueno, bajemos un poco más. 65 00:04:47,450 --> 00:04:49,670 Van a ver que tenemos un montón de tags. 66 00:04:49,670 --> 00:04:57,230 Por cierto, todas estos tags que la gente tiene, por ejemplo el 19.3 punto 15, 19.2 Alpine, todo 67 00:04:57,230 --> 00:05:04,520 esto, todo lo que está aquí es el mismo tag, o sea, yo sé que es el mismo, apuntan a la misma imagen, 68 00:05:04,520 --> 00:05:05,960 sólo que tiene diferentes nombres. 69 00:05:06,470 --> 00:05:10,520 Y aquí ustedes van a ver que está el proceso de construcción de ese Docker. 70 00:05:10,520 --> 00:05:16,520 Filmen el Docker file y aquí está From al point 3.15, que ustedes ya deberían de saber que es el Alpine, 71 00:05:16,520 --> 00:05:19,500 porque lo he explicado muchas veces, que también ustedes lo tienen en el. 72 00:05:19,850 --> 00:05:25,190 La guía de atajos Alpine no es más que una versión de una distribución súper ligera, etcétera, etcétera 73 00:05:25,430 --> 00:05:27,080 Y ahí están, con un montón de pasos. 74 00:05:27,410 --> 00:05:31,370 Cada paso que hace aquí es una capa y hay pasos como este. 75 00:05:31,790 --> 00:05:36,860 No hace falta que ustedes entiendan lo que dice aquí, pero este paso de Run y hay un montón de comandos 76 00:05:36,860 --> 00:05:37,250 que está aquí. 77 00:05:37,250 --> 00:05:42,470 Por ejemplo, ejecuta este comando y añade y ejecuta este, y después añade este, y después ejecuta 78 00:05:42,620 --> 00:05:50,630 y después ejecuta ese lo que está haciendo con todo este paso, todo ese paso hasta aquí es que ejecuta 79 00:05:50,630 --> 00:05:56,180 todo esto, le dice, le dice a Docker, ejecuta todo esto y crea una capa con el resultado del mismo. 80 00:05:56,180 --> 00:06:00,440 Es decir, esto va a ver que si al día de mañana no hay ningún cambio en estas instrucciones, va a 81 00:06:00,440 --> 00:06:05,000 ser la misma capa y no se vuelve a ejecutar una segunda vez porque lo demás va a estar en caché y funciona 82 00:06:05,000 --> 00:06:07,660 muy rápido después y así sucesivamente. 83 00:06:07,670 --> 00:06:13,310 Luego tenemos una variable entorno que ejecuta sea el comando o en este caso son una serie de instrucciones 84 00:06:13,700 --> 00:06:16,190 de descomprimir otras cosas que eran directorios. 85 00:06:16,190 --> 00:06:16,580 En fin. 86 00:06:17,330 --> 00:06:19,640 Y eso es todo lo que está haciendo, básicamente. 87 00:06:20,630 --> 00:06:22,040 Ok, regresemos. 88 00:06:22,040 --> 00:06:23,570 Ups, regresemos. 89 00:06:23,570 --> 00:06:26,900 Lo cerré sin querer, pero pensé que lo tenía abierto en otro lado. 90 00:06:27,290 --> 00:06:29,060 Entonces todo va a comenzar. 91 00:06:29,060 --> 00:06:32,360 Toda nuestra aplicación necesita empezar por un punto. 92 00:06:32,510 --> 00:06:38,120 No nos ofrece un Alpine, es decir, un Node que ya habían instalado en un Linux. 93 00:06:38,150 --> 00:06:41,540 Esto es lo que significa el Alpine con Node. 94 00:06:41,840 --> 00:06:47,690 Básicamente quiero tomar una versión de Linux lista para producción, o sea, lista para que yo la pueda 95 00:06:47,690 --> 00:06:52,220 utilizar en la vida real que ya viene con un Node preinstalado. 96 00:06:52,670 --> 00:06:56,300 Si nos vamos a la parte de tags hay muchos y van a ver que las imágenes comprimidas. 97 00:06:56,710 --> 00:07:02,590 Son muy grandes, pero si ustedes buscan al PIN, por ejemplo, van a ver que las imágenes de Alpa N 98 00:07:02,590 --> 00:07:03,390 son más pequeñas. 99 00:07:03,400 --> 00:07:05,800 Ojo, que aquí está comprimido, no está descomprimido. 100 00:07:05,800 --> 00:07:10,450 Comprimido es ese peso, pero descomprimido puede ser 100, 150 megas, etc. 101 00:07:11,630 --> 00:07:16,820 Ok, van a buscar la versión 19,2 menos Alpine. 102 00:07:17,210 --> 00:07:19,970 Esa es la versión que yo quiero utilizar y esa es la que vamos a usar. 103 00:07:19,970 --> 00:07:24,800 Pero puede ser que ustedes quieran una versión 14 o una versión 12, la versión que necesite su aplicación 104 00:07:24,800 --> 00:07:25,550 para funcionar. 105 00:07:25,850 --> 00:07:28,990 Entonces, el primer paso que vamos a hacer es tomar esta versión. 106 00:07:29,000 --> 00:07:36,170 Pueden venir aquí, copiarse este pedacito de código que es Node, y el tag es 19.2, es decir, la 107 00:07:36,170 --> 00:07:39,350 versión 19 de Node menos Alpine. 108 00:07:39,590 --> 00:07:44,390 Si no dice Alpine, también ustedes van a poder encontrar otras versiones, como por ejemplo esta 19 109 00:07:44,390 --> 00:07:49,100 punto Two y esta es la versión de Alpine que está usando, porque Alpine también tiene otras versiones. 110 00:07:49,100 --> 00:07:54,410 Si quieren usemos esta de aquí porque es un nombre teóricamente más complicado, pero no es nada del 111 00:07:54,410 --> 00:07:54,820 otro mundo. 112 00:07:54,830 --> 00:07:58,340 Podemos tocar este botón y regresemos a nuestro Docker File. 113 00:07:59,380 --> 00:08:00,010 El primero. 114 00:08:00,070 --> 00:08:05,230 La primera instrucción usualmente viene como o con la palabra from y ustedes empiezan a escribir from 115 00:08:05,230 --> 00:08:06,100 y aquí me dice from. 116 00:08:06,610 --> 00:08:07,480 Imagen base. 117 00:08:08,140 --> 00:08:10,000 Usualmente lo que nosotros vamos a hacer. 118 00:08:11,450 --> 00:08:16,610 Usualmente lo que nosotros hacemos es que nuestros códigos van a estar basados en otra imagen. 119 00:08:17,450 --> 00:08:21,800 Técnicamente, ustedes pueden crear su imagen de absoluto cero, pero usualmente y la mayor parte de 120 00:08:21,800 --> 00:08:26,000 las veces y el 99% de las veces, ustedes van a trabajar con imágenes ya creadas. 121 00:08:26,240 --> 00:08:31,460 Entonces, básicamente aquí le digo de esta imagen es el punto inicial. 122 00:08:31,590 --> 00:08:31,920 Ok. 123 00:08:31,940 --> 00:08:33,920 Esta es nuestra, nuestra entrada. 124 00:08:34,280 --> 00:08:39,830 Aquí nosotros básicamente tenemos nuevamente nuestro sistema operativo, que sería el Alpine, la versión 125 00:08:39,830 --> 00:08:43,820 de Linux, y adicionalmente esa opción de Linux ya viene con Node instalado. 126 00:08:44,400 --> 00:08:46,400 Ok, ese va a ser nuestro primer paso. 127 00:08:46,670 --> 00:08:53,150 Otra cosa que vale la pena mencionar es que esta versión de Linux, esta versión de Linux que ya generó 128 00:08:53,150 --> 00:08:58,850 Node, viene con una carpeta interna llamada APP, que ya viene una carpeta internamente que se llama 129 00:08:58,850 --> 00:09:01,730 App, que usualmente ahí se usa para colocar mi aplicación. 130 00:09:01,730 --> 00:09:07,010 Pero ustedes pueden crear otros directorios porque básicamente es imagínense como si tuvieran una máquina 131 00:09:07,040 --> 00:09:09,440 virtual ya previamente configurada. 132 00:09:09,860 --> 00:09:15,560 Entonces el siguiente comando que yo quiero hacer es escribir Working directory y voy a especificar 133 00:09:15,560 --> 00:09:17,300 ah, el slash app. 134 00:09:17,570 --> 00:09:23,300 Es decir, esto es muy similar a que yo haga un cd, por ejemplo, voy a poner aquí arriba solo para 135 00:09:23,870 --> 00:09:27,040 que no nos equivoquemos, es como hacer un cd a la carpeta app. 136 00:09:27,050 --> 00:09:28,310 Lo mismo que hemos venido haciendo. 137 00:09:28,320 --> 00:09:34,880 Quiero que cambiemos de directorio al app, entonces todos los directorios o path relativos que yo voy 138 00:09:34,880 --> 00:09:38,660 a poner aquí van a estar ejecutándose dentro de este directorio. 139 00:09:39,330 --> 00:09:40,820 Ok, este es mi segundo paso. 140 00:09:41,150 --> 00:09:43,610 Recuerden, el All Point tiene esta carpeta de directorios. 141 00:09:44,210 --> 00:09:51,020 Van a ver que también tenemos el el user y tenemos lib y tenemos otro montón de carpetas ahí adentro. 142 00:09:51,800 --> 00:09:53,210 Ok, nos movemos de directorio. 143 00:09:53,840 --> 00:09:54,410 Perfecto. 144 00:09:55,100 --> 00:09:55,520 Ahora. 145 00:09:56,450 --> 00:10:01,460 Qué es lo que nosotros ocupamos para ejecutar nuestra aplicación, por ejemplo? 146 00:10:02,090 --> 00:10:07,180 Bueno, van a ser los archivos de la aplicación, porque ahorita es como que no tuviéramos nada. 147 00:10:07,220 --> 00:10:12,560 Es decir, no tenemos nada de nuestra aplicación, es decir, nuestro cron, O sea, este app JS no 148 00:10:12,560 --> 00:10:18,110 existe y es como que no tuviéramos nada, nada, nada, nada de proyecto, simplemente tenemos el Linux 149 00:10:18,140 --> 00:10:21,110 con Node instalado y nos movimos al directorio app nada más. 150 00:10:21,110 --> 00:10:22,130 Eso es todo lo que hacemos. 151 00:10:22,550 --> 00:10:27,830 De alguna manera yo tengo que copiar los archivos que hacen mi aplicación. 152 00:10:27,830 --> 00:10:34,010 Por ejemplo, ocupo copiar el app JS porque está en mi aplicación, por decirlo así, y también voy 153 00:10:34,010 --> 00:10:39,410 a ocupar el paquete JSON porque aquí está el comando de inicio y también me dice qué dependencias son 154 00:10:39,410 --> 00:10:40,490 las que tiene mi aplicación. 155 00:10:40,940 --> 00:10:46,280 Entonces voy a escribir comando de copia y van notando que la sintaxis es que cada instrucción va capitalizada 156 00:10:46,280 --> 00:10:47,510 y eso tiene que hacerlo así. 157 00:10:47,960 --> 00:10:53,510 Me dice el source de donde lo voy a copiar, que eso sería prácticamente mi proyecto, de donde me encuentro. 158 00:10:53,960 --> 00:10:59,520 Y el destino es el relativo al working directory de dentro del contenedor de la imagen que estamos creando. 159 00:10:59,550 --> 00:11:02,690 Bueno, dentro de la imagen que estamos creando, esto no es un contenedor dentro de la imagen que estamos 160 00:11:02,690 --> 00:11:02,990 creando. 161 00:11:03,890 --> 00:11:08,870 Entonces yo puedo definir varios archivos de una vez y varias sintaxis y lo demás. 162 00:11:08,870 --> 00:11:15,710 Es decir, quiero copiar el archivo app JS y también quiero copiar el package JSON, es decir, voy 163 00:11:15,710 --> 00:11:16,610 a copiar este. 164 00:11:17,660 --> 00:11:21,030 Que hace es escribirlo bien y voy a copiar el app. 165 00:11:21,050 --> 00:11:26,630 Esos dos archivos son los que hacen mi aplicación y el destino es el último lugar donde yo lo voy a 166 00:11:26,630 --> 00:11:27,140 colocar. 167 00:11:27,500 --> 00:11:33,890 Si yo no hubiera escrito el Walking Dead History tendría que poner es las app, es las y quiero que 168 00:11:33,890 --> 00:11:39,920 lo pegues aquí, pero como tengo la línea de Walking Directory, entonces voy a ponerlo en el punto 169 00:11:39,920 --> 00:11:41,960 de slash, que esto ya está. 170 00:11:42,380 --> 00:11:45,170 El destino sería el slash app. 171 00:11:46,470 --> 00:11:46,710 Ok. 172 00:11:46,830 --> 00:11:49,680 Va a copiar este archivo, este otro lo va a pegar por acá. 173 00:11:49,950 --> 00:11:52,000 Como el video ya se está haciendo un poquito largo. 174 00:11:52,020 --> 00:11:57,450 Qué les parece si terminamos este video acá y continuamos en la siguiente clase donde vamos a construir 175 00:11:57,450 --> 00:11:58,050 nuestra imagen? 176 00:11:58,050 --> 00:11:59,130 Que solo faltan dos comandos. 177 00:11:59,130 --> 00:12:00,510 Ya, pero dejémoslo así.
Compartir