El tercer contenedor que nosotros vamos a colocar en nuestro multi container App es esta aplicación
de Pokemon que está construido a Inés y es básicamente un back in.
También tiene su parte del frontend, que es para la gente, hace una petición a cierta carpeta pública,
entonces nuestro mensaje ya lo vamos a ver.
Pero técnicamente esto es puramente nuestro imagen que se conecta a la base de datos y hace el procesamiento
de los mismos.
Si ustedes estarán pensando que seguramente ya, ya sé que lo van a decir después.
Ustedes pueden tener su aplicación del frontend también como una imagen y simplemente se monta esa imagen.
Se le manda la variable de entorno, que sería en este caso cuál es la cadena de conexión a mi backend,
y eso básicamente sería todo.
Técnicamente podríamos montar nuestra aplicación del forum dentro de este backend, pero entre más tareas
individuales haga, cada uno de estos contenedores es mejor, es mejor, Es mejor tener una aplicación
que se encargue de hacer el backend y después nosotros simplemente actualizamos el front si es necesario
o después solo actualizamos el backend si es necesario, pero no tendríamos que.
No tendría mucho sentido hacer una modificación en ambos lugares de manera simultánea.
Es decir, si algo pequeño cambian el en el backend porque el frontend tiene que verse afectado.
En fin, son discusiones que se pueden tener después.
En fin, en el material adjunto ustedes tienen un enlace que los lleva directamente a este repositorio
que es mío.
Yo lo subí a esta aplicación y si nos vamos a la parte de los tags van a ver algo interesante que vemos
que hay diferentes arquitecturas de procesadores que están acá y de sistemas operativos que básicamente
solo son Linux, pero son diferentes arquitecturas de Linux o de procesador, mejor dicho, procesadores
que nosotros tenemos ahí.
Esto es algo interesante, porque si nosotros buscamos Mongo, por ejemplo, y nos vamos a la imagen
oficial de Mongo Tags van a ver que hay para diferentes arquitecturas de Windows, Linux o Mac.
También es importante que nosotros hagamos nuestras imágenes, que esto también lo vamos a aprender
muy pronto, hacerlas de múltiples arquitecturas, porque puede ser que ustedes se encuentren con una
computadora que tiene cierto tipo de arquitectura de procesador, que cuando ustedes construyen la imagen,
esa imagen está construida solo para esa arquitectura de procesador y su imagen intenta correrse en
otro procesador puede ser, o en otra arquitectura procesador van a tener que o hacer o quedó que compus
o o quedó que le haga el puente de compatibilidad, que eso reduce la eficiencia del contenedor o bien
simplemente le va a decir no, yo no puedo correr eso y les lanza un error, especialmente si ustedes
lo despliegan en HTML, Amazon, web service o cualquier lado.
Si no está para arquitectura en la cual ustedes van a correr, su procesador ni siquiera les va a permitir
una emulación.
Y ya vamos a ver cómo hacer todo eso muy pronto.
Y esto es parte de los ejercicios que nosotros vamos a hacer muy pronto, muy pronto.
Ok, hagamos la tercera en nuestro tercer contenedor.
Note que aquí dice que la aplicación está hecha a Good News, como se expone el puerto 3000.
Estas son las variables de entorno necesaria que supongo debe indivi name.
Estos son nombres de variables de entorno que yo definí en la aplicación intencionalmente.
Les puse esos nombres una vez ya se tiene montada la aplicación.
Note que está exponiendo el puerto 3000.
Podemos mandar a llamar esto para cargar la e mandar a cargar nuestra semilla de la base de datos que
está ahí y a la data inicial.
Y también podemos probar un endpoint.
Acá no tiene mucho sentido explicar todo el funcionamiento de la aplicación, pero con esto es más que
suficiente.
Echemos a andar esta aplicación.
Vámonos a los tags.
No usen el Layret.
Recuerden, no usemos el vamos a usar en este caso la versión uno punto 0.0.
Entonces pueden venir a copiarse todo este URL.
Este es el usuario.
Este es el La imagen propiamente está en este usuario.
Copien.
Piense todo esto.
O mejor aún, podemos hacer clic aquí.
Regresemos a Visual Studio Code.
Voy a presionar Enter Enter un shift con tab para que esté al mismo nivel de manejo expreso y todo lo
demás.
Y este se va a llamar Poke menos app dos puntos tab enter de pens on.
De qué va a depender esto?
Va a depender de la base de datos.
Enter menos espacio y va a depender también de Mongo Express.
Técnicamente no ocuparía Mount o Express porque son independientes uno de uno del otro, pero voy a
esperarme a que Mongo Express esté terminado y luego pues ir con el siguiente paso.
Qué puertos o qué imagen es la que voy a ocupar.
Yo le recomendaría que así como esté esa estructura, es decir, de Pence, Image, Environment, Sports,
restart, se hagan todas para mantener el mismo estándar.
Sólo es una recomendación, pero no es obligatorio y la imagen que vamos a utilizar es esta De aquí
el nombre de usuario, el nombre de la imagen y el tag que es uno punto 0.0.
Ahí se va a encargar de usarlo basado en la arquitectura correspondiente.
Y probé esto en Windows y en Mac también.
Ya lo hice.
Estas pruebas para que funcione esa parte de las arquitecturas.
En fin, voy a presionar un enter.
Ahora viene una parte interesante que son los Ports.
Qué puerto?
Ese que necesito exponer.
Bueno, yo quiero exponerlo en el puerto 3000 de mi equipo con el puerto 3000 del contenedor, porque
yo sé que el contenedor lo expone porque así dice la documentación, así está el código.
Y quien sea que creó el backend debería decir a mí en qué puerto está corriendo eso?
O bien si es una variable de entorno que especifique la variable de entorno que también está configurada,
pero eso es otra cosa.
No quiero hablar mucho sobre cómo está construida esa aplicación.
Ok, ya tenemos esa parte de los puertos.
Vamos con los Environment Environment.
Si se preguntan cómo hago para que aparezca la ayuda?
Yo presiono control espaciadora.
La variable de entorno me está pidiendo que sea el Overview.
Está pidiendo que sea MongoDB, que básicamente es el servicio de Mongo con el puerto.
27 cero 17.
Los puntos.
Y también me está pidiendo el Divine Time que este Divine debería de ser el mismo Divine que se conecta
con Express porque es el mismo nombre del servidor donde está corriendo la base de datos para la parte
de la cadena de conexión.
Cómo lo pide?
Está pidiéndolo de esta manera con el protocolo, con todo esto.
Control C básicamente es el servicio de Mongo que nosotros ocupamos llamar, solo que aquí es un poquito
diferente.
Porque recuerden, si yo lo dejo así, funcionaría.
Pero mi cadena de conexión de Mongo requiere autenticación.
Entonces tengo que crear la autenticación aquí.
Entonces el protocolo de Mongo DB Está bien.
Luego viene.
Si ustedes acuerdan, déjenme abrir para refrescarle la memoria.
Hace clic derecho aquí Editar.
Se acordarán que era Mongo de las islas.
Nombre de usuario dos puntos.
Password arroba.
El host dos puntos.
Puerto 27 27 cero 17.
Pueden copiarse esto?
Venir aquí.
Ven, helo acá.
Y ahora ocupamos hacer el reemplazo de cada una de estas variables por variables de entorno.
Por ejemplo, empezaríamos con el username.
Que yo sé que el username sería en este caso Strider.
Voy a pegarlo pero tengo que tomarlo de la variable de entorno.
Vamos a hacer lo mismo con el password.
Ups con el password.
Asegurense de dejarlo así.
Mongo debe usar dos puntos, luego viene el password y el host.
Voy a cerrar este aquí y el host no es localhost porque localhost significaría que en la aplicación
que yo estoy montando busque ahí la base de datos y no está en la aplicación que estoy montando.
Está en la red que está creando este Docker con post.
Entonces, qué nombre es Debe o Mongo?
Adivinan cuál de los dos es?
Recuerden, este es el servicio y este es el nombre del contenedor, que a su vez es el nombre del servidor
basado en el DNS que está asignado en la red.
Ok, ese es el nombre de ese servidor.
Entonces nuevamente arroba viene el nombre del servicio y el puerto es el 27 cero 17 que si ustedes
lo lo pusieran corriendo en un puerto independiente, por ejemplo, que ustedes digan en la inicialización
de Mongo voy a ponerlo en un puerto diferente para mayor seguridad o por cualquier otra razón.
Entonces ese puerto sería conveniente ponerlo en una variable de entorno para que los demás contenedores
que dependen de la base de datos también lo sepan.
Y básicamente eso sería la parte Voy a colocar visitor always start always.
Voy a grabar los cambios y esto es básicamente todo.
Ok, voy a regresar la terminal, voy a asegurarme de que lo haya bajado, que no tenga nada y ahora
tengo que con post hop menos de presionemos enter y dejen que esto nuevamente empiece a realizar La
magia va a ser una descarga de 100 megas más o menos que eso es lo que termina creando la aplicación
final.
Pero recuerden que la aplicación final que nosotros tenemos aquí, esta aplicación ya tiene todas las
conexiones.
Ups, aquí escribí mal, algo me dice error, invalide restart, pal dice always, lo escribí mal,
always always ok, vamos de nuevo flecha de arriba, lo vamos a hacer.
Recuerden lean los errores y ya se levantó todo súper rápido porque ya había descargado la imagen y
simplemente se ejecuta el proceso.
Regresamos a la terminal del navegador web.
Puedo recargar aquí?
Van a ver que aquí aparece Pokemon Dive porque apareció Pokémon automáticamente, porque también la
aplicación está conectándose ahí.
Ok, ya vamos a ver cómo funciona.
Y si regresamos a la documentación dice que puedo probar el localhost 3000 con el API Sid.
Es decir, podemos abrir esto y vamos a ver qué dice.
Si execute.
Esto es mi aplicación.
Es la aplicación.
Es más, si ustedes borran todo esto.
Presiona Enter.
Van a ver que dice que no hay ningún directorio en user publica, es decir, no hay ningún archivo ahí.
Si yo pusiera un index html, eso es lo que se va a mostrar.
Pero obviamente no quiero hablar de la aplicación de Inés que está creada.
Cierro y si yo hago clic en el segundo enlace, siempre y cuando ustedes lo tengan en el mismo puerto
3000 van a ver que aquí tenemos información de 20 pokémons basado en el offset quiero 20 y que me muestre
los siguientes 40 después de los primeros 40.
Básicamente ahí tenemos nuestros pokemones.
También puedo venir aquí y decir que solo quiero el límite.
Voy a poner que muestre 151 que no creo que haya metido 151 no me acuerdo y voy a irme al final y deberíamos
detener todos esos pokémons porque hasta ahí está.
No sé cuántos pokemon cargué en la aplicación, creo que fueron solo 150 o 151, y eso es todo.
Pero en este momento quiero que ustedes analicen qué es lo que está pasando en nuestra computadora con
un único comando.
Con este único comando estamos configurando la base de datos, una manera de poder acceder a ella,
y también estamos montando nuestra aplicación, que está basado en una imagen y una versión específica
de nuestra aplicación.
Si el buque sufriera algún cambio, por ejemplo, nuestra aplicación de Pokemon, ahora tenemos que
montar la versión dos, tres o cuatro, o montar una nueva versión.
Un parche, un parche, digamos el parche 123 o cuatro, un bug fix o lo que ustedes quieran.
Rápidamente podemos hacer esto muy sencillo, muy rápido.
Y si por alguna razón la siguiente versión de Yo problemas también es muy fácil regresarse y revertir
los cambios porque ya tendríamos nuestra nuestra imagen implementada.
Es decir, tenemos nuestro historial y todo lo demás.
Recuerden que para que ustedes puedan acceder a mi repositorio, a este que ustedes están viendo, este
repositorio es público, es decir, esta imagen que está aquí es pública.
Si ustedes la hicieran privada, entonces tienen que tener otro tipo de credenciales para poder acceder
a ella, y eso es algo que vamos a ver después.
Ok?
Por ahora.
Por ahora, siéntanse orgullosos de todo lo que acabamos de hacer.
Juntos montamos la aplicación, montamos bases de datos, montamos formas para revisar la base de datos,
que por cierto podríamos analizarlo si ustedes se van a localhost en el 80 80.
Qué?
80?
Van a ver que aquí tenemos la parte de Pokémon de B.
Puedo ir a ver la información de esta de esta colección de Pokémon?
Si, ahí están.
Podemos ir analizando todos los pokemones, como están, sus ideas, etcétera, etcétera Hacer conteos,
ver como está la base de datos y efectivamente ahí lo tenemos.
Sus ideas de Mongo puedo borrar o puede editar.
Recuerden, ahí están, son 650 documentos.
Parece que eso es lo que tenemos ahí.
Fenomenal.
Dejemos esto hasta este punto.
Les voy a dejar también en la siguiente clase el archivo terminado este Docker Compact Channel para
que ustedes simplemente lo guarden y lo ejecuten.
Y vamos a empezar a trabajar en las próximas clases creando nuestras imágenes, porque hay muchas consideraciones
interesantes que hacer ahí y muchas personas también están esperando llegar a esa parte del perfil.
Ok, espero les haya gustado esta sección y nos vemos en el siguiente video.