En esta clase vamos a seguir practicando con el Docker con post file y la herramienta de lo que compost.
Esta es una aplicación bien interesante porque vamos a aplicar varias cosas.
Vamos a utilizar la base de datos MongoDB.
También vamos a conectarnos mediante Mongo Express para revisar la base de datos.
Y también quiero que después montemos esta aplicación, que yo se la voy a facilitar.
Luego les paso el URL en el cual quiero que descarguemos y corramos esta aplicación que yo hice un curso
de introducción para que lo corramos para ver cómo funciona todo.
Entonces vamos a hacer todo este procedimiento.
Esto es una aplicación que básicamente solo depende de MongoDB.
Pero adicionalmente, yo quiero poder analizar cómo está la base de datos directamente desde un servicio
que vamos a montar, que es Mundo Express.
Otra cosa es que si nosotros intentamos levantar o revisar la parte de Mongo en nuestro table, se puede
leerla, pero no puede hacer ciertas cosas porque no está todavía especializado en Mongo.
Es más, ustedes intentan hacer una conexión.
Todavía está en beta, por lo menos la versión en la que yo estoy utilizándolo y puedo hacer ciertas
cosas en Mongo, pero no puedo hacer todo.
En fin de cuentas, no necesito hacer mucho.
No es un curso de Mongo tampoco.
Pero vamos a intentar hacer todo esto.
Como son tres contenedores los que están involucrados en todo esto, idealmente, yo les diría vayamos
uno por uno.
Vayamos probando uno por uno, un paso a la vez.
Porque si intentamos montar todos, o sea todos los contenedores de un solo, pueden haber muchos puntos
de falla.
Es decir, puede que Mongo Express esté mal configurado o puede que esté bien y Mongo esté fallando.
Entonces ninguno de los dos funciona.
Y luego quiero correr la aplicación, que depende de Mongo, pero tampoco funciona porque Mongo no está
arriba.
Entonces hay muchos puntos en los cuales esto puede salir mal.
Nuevamente mi recomendación es que vayamos paso por paso, paso por paso.
Y si ustedes abren en la hoja de atajos que yo les pasé en la sección del Docker con post.
Se acordarán que nosotros teníamos aquí el depend on.
Esto es un buen tip para indicarles a ustedes que este no sería nuestro primer contenedor, que vamos
a levantar, nuestra primera imagen que vamos a levantar en el contenedor empezaríamos.
En este momento yo no sé cual es, yo no sé cual es la primera porque lo vamos a empezar a crear todo,
pero cuando ustedes miren un caso así, pueden empezar a hacer pruebas con cada uno de los contenedores
que no tienen ningún depend.
ON siempre va a haber uno, que es el punto inicial en el cual no depende de ningún otro.
Ok, entonces vamos a comenzar este ejercicio.
Vámonos a nuestro escritorio, hagan doble clic en la carpeta de Docker.
Si no tienen ninguna creen voy a crear un nuevo archivo que se llame Pokemon App dentro de Pokemon App.
Voy a tomar el archivo y dejarlo caer en Visual Studio Code.
Vamos a ser un más grande.
Ok?
Y aquí también les voy a explicar cómo utilizar variables de entorno en el post file, que es bien sencillo,
pero usualmente también tiene su e sus truquitos.
No voy a presionar el botón para crear un nuevo archivo y voy a crear el Docker con post.
Lo llamo y también voy a crear un archivo punto y MB que es de variables de entorno.
Usualmente las variables de entorno no se suben a los repositorios porque aquí están nuestras configuraciones
y nuestras credenciales, por decirlo así, pero ya hablaremos más al respecto de eso.
El punto bien es el mismo que nosotros ya estamos acostumbrados a trabajar en otro tipo de aplicaciones
y la ventaja es que el Docker post ya viene por defecto leyendo los archivos de ambiente que se encuentran
en el mismo nivel de nuestro Docker Campus Fire.
Entonces no tenemos que hacer mucho.
Ok, voy a cerrar esto y empecemos nuestra primera parte del camino de montar estos tres contenedores
empezando con MongoDB.
Entonces, primero empecemos con la versión, la versión tres.
Voy a correr esto por un lado y empecemos con los servicios.
El nombre del servicio.
Le voy a poner base de datos, pero ustedes le pueden poner cualquier nombre, pueden poner en un rango
de V o etc lo que ustedes necesitan.
Voy a presionar Enter Tab.
Dentro de estos servicios, voy a ponerle el nombre.
Mi contenedor Container Name va a ser igual a y podríamos poner como Pokemón de B.
Ok, pokemon t v enter.
La imagen que yo voy a utilizar es la imagen de Mongo en la versión 6.0 o el tag 6.0.
Y por favor hagan la misma que yo o utilicemos la misma que yo.
Luego voy a definir los volúmenes para los volúmenes.
Voy a crearme uno que se llama Poke Bol o algo así.
Está chistoso el nombre y esto va a apuntar a el pack del contenedor donde va a estar la base de datos
que yo no sé cuál es.
Se las voy a dejar de tarea para que la investiguen en este momento, pero denme un segundo.
Al terminar esto, presionen enter y en la mera raíz de nuestro archivo vamos a escribir Valiums.
Voy a poner Pokeball.
Los puntos Enter external, los puntos Falls.
Esto me va a permitir a mi fácilmente poder hacer el cambio si quiero que tome la el volumen externo
o el volumen que ve el Docker con posts me va a crear.
Si yo lo pongo en true, entonces va a buscar en el ambiente externo de este Docker fiel el volumen
que ya lo habíamos visto como que lo creáramos manualmente.
Si yo lo pongo en false, entonces lo que va a pasar es que cuando yo ejecute este archivo mediante
el docker con post up, va a revisar que tenemos estos volúmenes y va a crear el volumen para este Docker.
Compost fire.
Ok, tarea.
Necesito que ustedes averigüen cual es el paso donde MongoDB graba la información.
Para eso ustedes van a venir aquí.
Va a buscar la imagen oficial de Mongo y por algún lado de todo este documento, por algún lado de todo
esto esta la información del país donde se graba.
Ok, recuerden que tiene que empezar con Slash y por ahí va, entonces supongo le pasa el video, investiguen
donde esta esto y yo regreso con la solución en esta misma clase de unos segundos, pero intenten hacer
esta investigación por ustedes mismos.
Pasa allá.
Ok, Lo lograron hacer?
Espero que sí.
Y si no, pues resolvamos esto juntos.
Usualmente lo que yo hago es buscar algo como la palabra Valium o algo así.
Valium.
Entonces busquemos en la palabra Valium.
Voy a presionar Enter.
Enter.
Y por algún lado tiene que estar.
Vamos a ver.
Se puede crear un directorio.
May on.
Este no es run.
Algo.
Esto no es para esto.
Es para manejar el volumen.
Pero usted ya sabe que es esto.
Esto es un Bin Valium desde el falleciste.
Y aquí está.
Data DB.
Ahí lo tenemos.
Y también ustedes pueden ver que también se crea el archivo de configuración por ahí, por ese lugar.
En fin.
Pero este es el que a mí me está interesando.
Entonces lo voy a pegar por ahí.
Excelente.
Ya con eso vamos a estar grabando.
Todo lo que sucede en la base de datos va a ser persistente.
Voy a venir acá.
Los puertos no son necesarios, no los voy a, lo voy a poner temporalmente, pero después los voy a
quitar porque solo quiero que la aplicación y los que están en la red puedan ver la base de datos,
no el mundo exterior.
Pero por ahora vamos a hacer una prueba de conexión, así que voy a exponer el puerto 27 cero 17, que
es el puerto que expone Mongo con el puerto 27 cero 17 de El contenedor de Mongo.
Este es mi puerto.
Y ese es el puerto de Mongo.
Ahora, adicionalmente, lo voy a dejar colocar aquí.
Start in always start los puntos en always.
Eso es útil cuando ustedes están trabajando con aplicaciones de múltiples contenedores y posiblemente
alguna se cae por alguna razón, o necesitamos volver a levantar cuando sucede algún problema o cuando
una imagen se levanta, entonces que intente volverlo a hacer.
Entonces, hay varias razones por las cuales Crystal Always funciona bastante bien en este caso.
Entonces voy a grabar los cambios.
Esto es básicamente todo lo que yo necesito para la configuración básica.
Muy pronto voy a definir en la próxima clase otras variables de entorno para mi base de datos de Mongo.
Por ejemplo, crearme una base de datos inicial.
Voy a crearme también un par de usuarios y un par de cosas que he, o sea, un usuario root.
Y también quiero que tengamos cierta autenticación porque por defecto voy a escribir OUT.
Por defecto, Mongo viene sin ninguna autenticación.
Aunque si el contenedor está protegido, es decir, no está expuesto, igual tenemos cierto paso de
seguridad, pero igual voy a querer después poner unas credenciales y ejecutar el modo para hacer consultas
de modo autenticado.
Ok, pero ya lo vamos a hacer en la próxima clase.
Pero esto es algo propio de Mongo, que no tiene mucho que ver ahí Docker.
Pero siempre sería bueno que nuestras bases de datos están protegidas, no?
Ok, pero no se preocupe mucho por eso.
Haremos los cambios e intentemos ejecutar esto.
Le voy a pedir que lo hagamos con la PowerShell o terminal desde afuera para que podamos estar ejecutando
estos comandos y fácilmente poder observar lo que sucede.
Entonces vamos a hacer un cd y recuerden navegar a la carpeta de nuestro proyecto que sería Pokemon
App.
Lo dejamos caer aquí.
Enter Docker con post up presionamos.
Eso va a hacer varias cosas.
Como yo no tengo la imagen de Mongo, específicamente la versión o el tag safe, entonces para hacer
la descarga eso puede demorar un poco, porque la base de datos, a pesar de que está comprimida, las
imágenes están comprimidas.
A pesar de eso, puede demorar un poco.
Entonces pueden irse a tomar un café mientras hacen la descarga y regresan.
En mi caso, ya casi termina.
Ya casi termina esta parte de la descarga y una vez se levanta, vamos a hacer una prueba de conexión
que como todavía no hemos puesto ninguna regla y van a ver que ya está corriendo Mongo de B, tenemos
este montón de logs, que eso está bien.
Vamos a abrir Table Plus.
Ok.
Vamos a crear una nueva conexión.
Seleccionemos Mongo.
Crear.
Y aquí van a ver el nombre.
Voy a ponerle temporal porque debe o cualquier cosa.
El URL viene con el protocolo de Mongo de las islas.
Viene el local host, el puerto, seguido de en este caso alguna base de datos, pero por ahora lo único
que vamos a hacer es escribir Mongo DB que eso sería nuestro protocolo.
Dos puntos y Slash, Slash y como nosotros estamos exponiendo el puerto, tenemos acceso al local host
en nuestro equipo, el puerto que tenemos habilitado por defecto, cual es el puerto es el 27 cero 17
y hagamos el test de conexión.
Vamos a ver que aquí se movió a algo.
Ven?
Cada vez que yo toco es porque la conexión se realiza, puedo darle guardar, puedo ingresar, presionar,
control R Tratar de listar las bases de datos y estas son las bases de datos que nosotros tenemos por
defecto an config y local.
Si yo intento crear una nueva, esa opción no está soportada en estos momentos.
Puede ser que con ustedes lo miren ya funcione, pero en este momento no, Pero de todos modos no necesito
hacer eso, con que podamos ver esa base de datos es mas que suficiente y cierro.
Ok.
Eso significa que ya teníamos nuestra base de datos corriendo muy fácilmente.
Voy a cancelar esto con Control C, y si ustedes quieren bajar o hacer la limpieza, porque recuerden
que la parte de Docker y cuando yo lo cancelo con control, simplemente deja esto detenido.
Pero si yo necesito limpiarlo, recuerden, sería Docker Compass Down y esto ya lo remueve.
Ok, dejemos la clase hasta este punto y hagamos otras configuraciones adicionales y usemos esas variables
de entorno que nosotros ya definimos.
Bueno, por lo menos las creamos, pero todavía no estamos usando.
Y hagamos esto en la próxima clase.
Ok?