No sé cómo le fue con la tarea.
Lo lograron hacer?
Espero que sí.
Y si no, resolvamos esto juntos nuevamente.
Esto no es tan sencillo.
Intencionalmente?
Por qué?
Por qué nosotros tenemos.
Digamos que a pesar de que tenemos varias etapas, la aplicación como nosotros la construimos, no tiene
un proceso de construcción.
Es decir, no hay un Bild, no hay nada.
Entonces todo mi fuente está esparcido a lo largo del proyecto.
Técnicamente, cuando ustedes usan algún framework, librería o un procedimiento de construcción un
poco más apegado a la realidad, ustedes tendrían una carpeta que se llama src o tiene una carpeta que
se llama distribución o qué se yo, el producto de la compilación o la generación del proyecto.
Y eso hace mucho más fácil el trabajo que nosotros teníamos que hacer.
Pero intencionalmente yo no lo hice así para que sea difícil y así nosotros busquemos una alternativa.
Recuerden que como ustedes lo hayan hecho, pues técnicamente y les corra y ustedes tengan su aplicación
funcionando, pues básicamente eso está bien.
Pero vamos a ver qué hacemos.
Estamos en la nueva etapa.
Cómo empezamos una nueva etapa con este comando?
Y se va a llamar runner.
Técnicamente no hace falta que ustedes le pongan la descripción.
Pueden poner el título ahí para que ustedes lo miren.
Ahora, aquí vienen varias cosas interesantes.
Ok.
Yo sé que tengo en el Builder, tengo mis dependencias, pero ahí están todas las dependencias.
Yo no solo yo solo necesito las dependencias de producción.
Entonces.
Qué hacemos?
Bueno, hay dos posibles soluciones.
Vamos a ver varias.
Una de ellas sería de que ustedes vengan y copien este paso.
Lo pegué aquí y voy a poner tal vez más de uno no hizo esto.
O tal vez alguien sí lo hizo.
Y le voy a poner como dependencias de producción en el cual voy a estar en ese walk in directory.
No voy a copiar nada de aquí y voy a hacer el run.
Es más, ni siquiera este copy ni estoy aquí.
Y voy a ser el de npm install menos brote, que es básicamente el mismo comando que teníamos aquí.
Y esta nueva imagen es sólo para producción, dependencias, dependencias de producción.
Producción.
La ventaja de hacerlo con este paso es que aquí sólo voy a tener esa dependencia de producción y después
todo esto puede estar almacenado en una única imagen, es decir, en una sola.
Bueno, obviamente en Layers uno o dos layers, pero tenemos esa información ahí y la cual va a ayudarnos
a acelerar el proceso de construcción.
Entonces, ahora en el copy yo puedo hacer exactamente esto mismo.
Ok, voy a copiar exactamente eso mismo y a poner como paso dos.
Pero no es Debs aquí.
Va a ser copiarlo de mi.
Debs, esto es una alternativa.
Una posible solución.
Otra cosa es que si yo lo dejo así como esta, me sale esto un poco más grande.
Bueno, no creo que esta bien, pero otra cosa que si yo lo dejo así en donde va a pegar todos estos
módulos de no?
Si yo lo dejo así lo voy a pegar en el root, es decir, en la carpeta donde tenemos los user.
El user donde tenemos bind va a instalarlo ahí o va a pegar esos módulos de ahí y yo no necesito que
sea eso.
Y por eso es que también voy a colocar aquí el Working Directory en el slash app.
Ok, entonces nos movemos o hacemos un cd a la carpeta del app y ahí es donde vamos a pegar los módulos
de Node.
Ok, ya estamos en ese punto.
Pero que sigue?
Ok, ya copiamos las dependencias de nuestros que siguen ok?
Ahora ocupamos las fuentes de nuestro proyecto, de nuestro proyecto, es decir, el código que nosotros
ocupamos correr, o sea, nuestra aplicación, nuestro código personalizado.
Y ahora aquí viene la pregunta del millón Ok, cómo hago eso?
Si yo lo dejo así.
Es decir, que copio punto, punto.
Si yo lo dejo así, voy a copiar todo lo que no está en el lo que ignore.
Entonces yo no quiero.
Bueno, técnicamente yo puedo especificarlo porque no son muchas cosas.
Yo.
Yo manualmente puedo especificar lo que quiero, que en este caso sería el app JS y todo lo que se encuentra
dentro de Task.
Ok.
Dentro de esta carpeta el único inconveniente que por cierto, yo les dejo a ustedes en el material
adjunto, unas dos documentaciones, una sobre los comandos.
Déjenme mostrarles acá yo les dejo ustedes en el material adjunto dos lugares para saber mas información
sobre la diferencia entre ATT y el copy, porque técnicamente hacen lo mismo.
Bueno, visualmente hacen lo mismo, pero el AD también hace, descomprime, descarga archivos, pero
esto ya se está motivando a que lo usen menos.
Cuando ustedes quieran descomprimir cosas hay que ejecutar archivos, se copia, se descomprime, etcétera
Se aconseja más trabajar con el copy para evitar efectos secundarios, pero de todas maneras ustedes
van a ver el AD.
Igual.
Yo les dejo a ustedes dos referencias al respecto sobre el Adversus Copy y también sobre el copy para
material adicional.
Ok, si ustedes se ponen a leer la información sobre el copy, el copy puede copiar archivos y directorios,
pero si yo lo especifico, por ejemplo si yo digo que quiero que copie el app JS y que lo pegue ahí,
entonces literalmente voy a tomar mi app JS y lo voy a pegar aquí adentro, o sea en el Working Directory.
Pero adicionalmente yo quiero los task, o sea los task.
Esto copiaría si yo le debo, así copiaría lo que se encuentra interno del archivo.
Es decir, se va a copiar este este archivo como tal y lo va a pegar en el working directory, cosa
que yo no ocupo.
Yo no tengo que hacer eso.
Yo quiero copiar el directorio con el nombre y pegarlo en ese lugar, entonces esto no me va a servir.
Entonces voy a hacer dos pasos aquí, voy a copiar el app y también voy a copiar lo de Task.
Y lo voy a pegar dentro.
Es decir, puedo ponerlo así puedo poner asterisco para hacer comodines.
Hay muchas cosas y por eso les dejo a ustedes la documentación del copy, porque hay muchas instrucciones
que pueden añadir del copy.
Entonces voy a copiar todo ese directorio y quiero que lo pegues en el directorio Task task, task task.
Es decir, esto como el directorio no existe, lo va a crear y va a mover todo lo que se encuentra dentro
de Task que asegúrese de que esté bien escrito.
Task va a copiar todo lo que está interno de este directorio y lo va a pegar todo dentro de ese otro
directorio.
Ok, luego no ocupo ejecutar las pruebas, no ocupo borrar nada, no ocupo hacer npm install y vamos
a ejecutar nuestra imagen.
Entonces, en teoría, ya terminamos.
Voy a poner aquí ejecutar la app.
Esto es lo que se va a ejecutar.
Dependencias de producción.
Voy a comprimir esto un poco más.
Van a ver que la idea es que tenemos ahora pasos más pequeños, más fáciles de entender y de comprender.
En lugar de tener un solo mamotreto con todo lo que tendríamos que ejecutar.
Esto es Wild Bill y Test.
O como en anteriores Greatest y Beatles.
Después tenemos aquí otro que va a ser.
Este paso va a ser, pongámosle, dependencia de desarrollo, desarrollo.
OK.
Definición de desarrollo La fase del test y Bill Construcción y testing las de producción que es opcional.
Puede ser que alguien no lo haya hecho de esa manera.
Recuerden, eso es lo bonito de la programación, que cada uno tiene una forma de pensar totalmente
diferente y eso hay ser todo.
Tal vez aquí vemos que hay copy y eso se podría resumir si se puede mejorar de diferentes maneras.
Si nosotros tuviéramos algún proceso de construcción y así podemos especificar que copie todo el directorio
con los fuentes, que eso es lo que vamos a hacer en próximos ejercicios.
Pero por ahora ya lo dejamos así.
Regresemos a la terminal.
Y hagamos un Docker Image ls.
Voy a copiar este de aquí.
Entonces hagamos el Docker.
Ups.
Hagamos Docker build.
Voy a ponerle el tag de credit Crunch y voy a ponerle leyes ahorita, por ejemplo.
Punto para que haga el bill de esta nueva imagen.
Ok tengo un error me dice npm roni stall main, no puedo omitirlo acá en el prod.
Dependencia sena dos tres.
Me faltó algo?
En España, obviamente, porque yo estoy haciendo un EP mixto, pero no copié el paquete JSON, entonces
hay que copiar el paquete punto JSON, copy package, punto JSON y que lo pegue ahí.
Ahora sí voy a grabar los cambios nuevamente.
Es lo que yo les digo.
No esperen que la primera vez sus Docker files.
Todo funciona a la perfección.
A ver, ahí ya lo tenemos.
Tenemos varios pasos en caché y tengo in lanes.
Vamos a echarlo a andar.
Vamos a hacer el Docker Docker Image ls.
Yo sé que ese es el nombre.
Sólo quiero asegurarme de que esté bien creado.
Entonces, Docker Container Run.
El nombre del contenedor.
Presiono Enter.
Iniciando la aplicación.
Esto es una buena señal y cada múltiplo de cinco vamos a tener el mensaje en cinco segundos.
Vamos a tener otro mensaje.
Esperemos.
Ok, voy a cancelarlo.
Y si a ustedes les pasa eso que se queda pegado, entonces bueno, detengamos la fuerza, lo podemos
hacer con la terminal, pero nuevamente para que esto sea un poco más rápido.
También les había pedido de que le pusieran otro tag, entonces vamos a hacer el mismo build y puede
usar esa misma instrucción ya que tenemos todo eso en caché.
Les había dicho que le pusiéramos un tag como perro u otra cosa, y es que bueno, en este caso puedo
poner el iris y eso lo crea y ya con eso hacemos el Docker y HLS y tenemos el iris y el perro ok.
En la próxima clase vamos a subir esto a Docker Jobs si quieren ustedes pueden adelantarse y subirlo.
Noten que la imagen quedó considerablemente más pequeña y eso es una buena señal.
Y eso que está descomprimido pero comprimida, va a ser otra cosa.
Cuando lo subamos vamos a mover correctamente el peso, pero en la próxima clase suba.
No, súbanlo así como está el Docker.
Pus súbanlo, suban el perro y el RS y por mientras dejenlo así.
Lo veo en el siguiente vídeo donde quiero explicaros un par de generalidades, así que nos vemos en
la próxima clase.