No sé.
Para este ejercicio, recuerden que ocupamos el código fuente y como lo dejamos en la clase anterior,
que básicamente fue levantar todo para asegurarnos de que esto funcione, ya sabemos como funciona la
aplicación más o menos, y cuando ustedes corren la aplicación, como hicieron el Nyan Start, dos puntos
de También les creó la carpeta de distribución, la cual tiene todo lo que nosotros ocupamos para correr
la aplicación.
Bueno, técnicamente no todo, porque también hay una dependencia de producción aquí, pero esto más
el código de distribución es todo lo que necesito.
No ocupamos el source static, no copiamos nada de eso.
Entonces no importa.
Como ustedes saben, esto no es la idea.
Lo que sí quiero explicarles en esta clase que más de uno me va a preguntar y porque estamos viendo
cosas de Docker, si estamos en la sección del multi state Build, porque eso es una parte importante
que ya sabemos nosotros, que es lo que hace el Docker File.
Y los invito a que leamos esto juntos y van a ver que esto ya tiene mucho más sentido.
Ok, vamos a leerlo from Esta es la imagen inicial de Node que está utilizando la versión 19, la versión
de Linux Alpine 3.15 y le estoy llamando de Dev dev como dependencia de desarrollo.
Lo que hacemos aquí es crear o movernos al Waking Directory, copiamos el package json, hacemos el
journey solo y este menos Frozen Doc file es para que básicamente congelemos las versiones que estamos
utilizando en este momento para evitar que cuando otra persona venga e instale esto, automáticamente
carguen nuevas versiones que no son las que nosotros estamos especificando y así manualmente nosotros
hacemos objects, pero la verdad es que no importa mucho eso comprender esa parte.
Luego creamos otro State, que es básicamente lo mismo que hicimos en la sección anterior, donde tenemos
ahora una un paso adicional que es el Builder, el cual toma el walk in directory.
Nos movemos en la app, copiamos todos los modulos de node, copiamos todo nuestro fuente, todo lo
que tengamos que no sea ignorado en el Docker que files ya saben esto, que por cierto, noten que también
la distribución no va a los módulos, no va la carpeta de git, no va, no va este bloque con post prod,
no, a este lo que llamamos no ocupamos nada de eso, ok?
Y regresamos al Docker file.
Entonces ya saben qué es lo que hace todo eso.
Luego aquí se podría hacer el testing si fuera necesario.
O sea, si ustedes tienen el testing implementado lo mismo que hicimos hace poco, luego hacemos el
Bill de la aplicación.
Esto construye la carpeta de distribución.
Esa carpeta de distribución es la que yo voy a venir a copiar acá, ya vamos a ver ese paso, ok?
Tenemos este, este, luego creamos otro este sólo para tener las dependencias de producción y aquí
me faltó poner el menos.
Ok, me faltó poner aquí el menú, por favor hagámoslo porque solo necesito las dependencias de producción,
ya instale.
Ok, que básicamente eso sería lo mismo.
Ustedes pueden copiar esto, pegarlo por acá.
Básicamente sería exactamente hacer únicamente las instalaciones de la parte de producción.
Bien.
Y, eh.
Vamos a ver, también nos movemos al Walking Directory y copiamos el paquete Jameson y ya lo teníamos
en esta parte nuestra dependencia de producción.
Luego creamos última, una última etapa que se llama Proteus y quiero que noten que esta se llama Prod
y aquí se llama Bueno, vamos a crear una que se llama Dev.
Ya van a ver esas partes.
Pero este nombre va a ser importante muy pronto.
Entonces aquí expongo el puerto 3000 y usualmente ahí es donde va a estar corriendo la aplicación.
Hago el movimiento a el working character, que sería el app.
Luego hacemos aquí una variable de entorno que es app versión y ustedes ya saben cuál es el app versión.
Ya vamos a chequear variables de entorno después.
Hacemos, copiamos todo lo que se encuentra en Pro Devs, que básicamente sería la carpeta de los módulos
de nuevo y me interesa que estén en la carpeta de los módulos dentro de esta nueva imagen que estoy
creando o estoy utilizando.
Y de El Builder sólo voy a copiar la carpeta de distribución.
Todo lo demás no lo necesito.
Y ojo, que aquí yo estoy.
Para las personas que están un poco más en esta, sabrian de que yo estoy buscando variables de entorno
que estén acá, pero esas variables de entorno no van a copiarse al proyecto, no están aquí, no,
no existen.
Y esas variables de entorno yo la voy a definir de otra manera, pero también se podrían definir aquí
si así lo desean, de esta misma manera, de esta misma forma, porque esta variables de entorno van
a poder ser consultadas por la aplicación que esté corriendo aquí.
Pero en fin, esto es básicamente todo lo que tenemos en nuestro Docker.
El que esperaría aquí es el comando para echar a andar la aplicación que yo esperaría que aquí no haya
nada, nada extraño o que no haya nada raro que comprendamos todo eso.
Tal vez lo que hace el ya, eso sí, no, pero todo lo demás, todos los demás comandos deberían de
tener sentido.
Ok, cerremos todo y abramos nuestro Docker Compass en los servicios.
Voy a crear un nuevo servicio que se llame APP.
Todavía no quiero que comencemos a realizar la parte del build porque también podemos definir para producción
y desarrollo en el mismo archivo.
Ya le voy a enseñar que eso es parte del objetivo de la sección, pero voy a comenzar con los volúmenes.
Voy a crearme un Viene Blum con mi carpeta, es decir, donde se encuentra este archivo de campos,
es decir, todo eso.
Voy a hacer el va en volume para que asigne esto o solo el punto con el slash app Slash que eso sería
la carpeta dentro de esa imagen.
Ok, voy a ponerle el container Name, va a ser next app Enter.
Vamos a definir los puertos.
En este caso, si ustedes notan que tenemos en el MB tenemos una variable entorno que se llama port.
Esa variable de puerto también lo puedo definir acá port.
Recuerden sin hacer espacios aquí, porque eso es otra cosa, sin esos espacios, dos puntos y voy a
apuntar nuevamente al puerto que yo tenga y así hago el puerto 3000 de mi máquina con el puerto 3000
que ellos especificando, o bien ustedes pueden cambiarlo acorde a sus necesidades.
Y luego necesito las variables de entorno environment.
Ahora me van a decir por qué estoy colocando las variables de entorno si ya las tenemos definidas acá?
Porque en un determinado punto en el tiempo ustedes se acordaron.
Yo no estoy copiando el archivo punto y MB que tiene mis variables de entorno, no lo estoy copiando
la nueva imagen, por lo cual no van a existir, pero esas variables de entorno van a existir porque
yo la voy a definir por aquí.
Eso es parte del objetivo también que vamos a hacer ahora.
Aquí hay muchas variables de entorno y la verdad es que ustedes si quieren pueden copiarse cada uno
de estos registros.
Yo voy a buscar el cursor, voy a crear múltiples cursores y cada una de esas palabras o pues básicamente
es lo mismo que nosotros queremos, queremos hacer esto lo voy a hacer un poco más rápido solo para
no perder mucho tiempo y voy a crear variables de entorno que se llaman exactamente igual a las variables
de entorno que tengo definidas ahí y las pego.
Y si lo hacemos de esta manera tiene que poner un listado de esta forma, o si lo hacemos de esta forma
que me gusta más, ya serían claramente como propiedades, cosa que es bien conveniente.
Ahora aquí va a pasar algo bien interesante.
Tenemos definido el volumen, que es el que hace nuestro pin valium con el Fat System, con el del contenedor.
Posiblemente más de uno va a estar pensando que aquí tenemos problemas con los modelos de nuevo, porque
estos modelos de no, yo los tengo instalados en mi equipo y también los estoy moviendo mediante el
Valium, los estoy moviendo a los modulos de Node, pero esos son especializados en mi computadora.
Cosas de aquí.
Puede ser que no funcionen porque se instalaron para Windows o Linux y Linux es diferente.
En fin.
Pero vamos a tener un error que quiero que ustedes lo vean.
Voy a regresar a los cambios aquí regresamos a terminar el invento y hagamos el docker con pass.
Bueno, antes de ejecutarlo asegúrense que no tengan nada corriendo, que no tengamos bueno ni nada,
si no que no tengamos corriendo el el nuestro multi container y vamos a hacer un UP.
Vamos a ver el error que dice aquí.
El servicio app no tiene ni una imagen o tampoco tiene un build context especificado, o sea, no tiene
un contexto de construcción especificado.
Entonces esto no es un archivo permitido para que ustedes puedan ejecutarlo, porque es qué era lo que
estábamos esperando que sucediera?
Bueno, que de alguna de una forma mágicamente el código que yo estoy haciendo mediante el Docker que
Posse subiera y levantar a mi aplicación de alguna manera estábamos esperando que mágicamente sucediera
eso, pero no es así.
O sea, no, mágicamente no pasa.
Yo tengo que especificar, ya sea una imagen base, es decir, que aquí yo ponga vamos a empezar con
el image y el image node por ejemplo, que también esto lo podemos mezclar con varias cosas que también
vamos a ver en esta sección que es super genial, pero técnicamente yo lo que necesito es mediante qué
instrucciones yo ocupo decirle a Docker para que cuando yo haga el Docker con post hub sepa a qué y
lo que yo necesito hacer va a ser, por ejemplo, que haga un paso similar a este que copie los fuente.
Bueno, no voy a copiar los puentes, pero que sí haga el ya install y luego ejecute el comando de no
estar dos puntos de o algo así.
Ok, entonces básicamente yo tengo que generar una serie de pasos adicionales para decirle a Docker
como quiero que se levante mi código particular.
Eso es lo que vamos a hacer en la próxima lección.
Por ahora no se preocupe que esto no funcione, por lo menos tengan los similar al mío y nos vemos en
la siguiente clase.