Logo Studenta

10 Multi-container app - Base de datos Mongo

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

1
00:00:05,720 --> 00:00:12,400
En esta clase vamos a seguir practicando con el Docker con post file y la herramienta de lo que compost.
2
00:00:12,890 --> 00:00:16,940
Esta es una aplicación bien interesante porque vamos a aplicar varias cosas.
3
00:00:17,120 --> 00:00:19,340
Vamos a utilizar la base de datos MongoDB.
4
00:00:19,810 --> 00:00:23,420
También vamos a conectarnos mediante Mongo Express para revisar la base de datos.
5
00:00:23,660 --> 00:00:29,210
Y también quiero que después montemos esta aplicación, que yo se la voy a facilitar.
6
00:00:29,240 --> 00:00:36,560
Luego les paso el URL en el cual quiero que descarguemos y corramos esta aplicación que yo hice un curso
7
00:00:36,560 --> 00:00:40,610
de introducción para que lo corramos para ver cómo funciona todo.
8
00:00:41,150 --> 00:00:43,200
Entonces vamos a hacer todo este procedimiento.
9
00:00:43,220 --> 00:00:46,100
Esto es una aplicación que básicamente solo depende de MongoDB.
10
00:00:46,370 --> 00:00:52,280
Pero adicionalmente, yo quiero poder analizar cómo está la base de datos directamente desde un servicio
11
00:00:52,280 --> 00:00:53,990
que vamos a montar, que es Mundo Express.
12
00:00:54,920 --> 00:01:02,030
Otra cosa es que si nosotros intentamos levantar o revisar la parte de Mongo en nuestro table, se puede
13
00:01:02,030 --> 00:01:07,000
leerla, pero no puede hacer ciertas cosas porque no está todavía especializado en Mongo.
14
00:01:07,130 --> 00:01:09,230
Es más, ustedes intentan hacer una conexión.
15
00:01:09,230 --> 00:01:13,190
Todavía está en beta, por lo menos la versión en la que yo estoy utilizándolo y puedo hacer ciertas
16
00:01:13,190 --> 00:01:15,110
cosas en Mongo, pero no puedo hacer todo.
17
00:01:16,020 --> 00:01:17,840
En fin de cuentas, no necesito hacer mucho.
18
00:01:17,840 --> 00:01:19,370
No es un curso de Mongo tampoco.
19
00:01:19,850 --> 00:01:22,160
Pero vamos a intentar hacer todo esto.
20
00:01:22,160 --> 00:01:28,550
Como son tres contenedores los que están involucrados en todo esto, idealmente, yo les diría vayamos
21
00:01:28,550 --> 00:01:29,170
uno por uno.
22
00:01:29,180 --> 00:01:31,250
Vayamos probando uno por uno, un paso a la vez.
23
00:01:31,250 --> 00:01:36,290
Porque si intentamos montar todos, o sea todos los contenedores de un solo, pueden haber muchos puntos
24
00:01:36,290 --> 00:01:36,710
de falla.
25
00:01:36,710 --> 00:01:41,030
Es decir, puede que Mongo Express esté mal configurado o puede que esté bien y Mongo esté fallando.
26
00:01:41,030 --> 00:01:42,500
Entonces ninguno de los dos funciona.
27
00:01:42,870 --> 00:01:47,360
Y luego quiero correr la aplicación, que depende de Mongo, pero tampoco funciona porque Mongo no está
28
00:01:47,360 --> 00:01:47,630
arriba.
29
00:01:47,630 --> 00:01:50,000
Entonces hay muchos puntos en los cuales esto puede salir mal.
30
00:01:51,090 --> 00:01:54,690
Nuevamente mi recomendación es que vayamos paso por paso, paso por paso.
31
00:01:54,930 --> 00:02:02,670
Y si ustedes abren en la hoja de atajos que yo les pasé en la sección del Docker con post.
32
00:02:03,950 --> 00:02:06,620
Se acordarán que nosotros teníamos aquí el depend on.
33
00:02:07,010 --> 00:02:13,280
Esto es un buen tip para indicarles a ustedes que este no sería nuestro primer contenedor, que vamos
34
00:02:13,280 --> 00:02:17,690
a levantar, nuestra primera imagen que vamos a levantar en el contenedor empezaríamos.
35
00:02:17,960 --> 00:02:22,940
En este momento yo no sé cual es, yo no sé cual es la primera porque lo vamos a empezar a crear todo,
36
00:02:22,940 --> 00:02:28,340
pero cuando ustedes miren un caso así, pueden empezar a hacer pruebas con cada uno de los contenedores
37
00:02:28,340 --> 00:02:29,890
que no tienen ningún depend.
38
00:02:30,020 --> 00:02:34,340
ON siempre va a haber uno, que es el punto inicial en el cual no depende de ningún otro.
39
00:02:34,850 --> 00:02:36,920
Ok, entonces vamos a comenzar este ejercicio.
40
00:02:36,920 --> 00:02:40,370
Vámonos a nuestro escritorio, hagan doble clic en la carpeta de Docker.
41
00:02:40,370 --> 00:02:46,340
Si no tienen ninguna creen voy a crear un nuevo archivo que se llame Pokemon App dentro de Pokemon App.
42
00:02:46,340 --> 00:02:49,160
Voy a tomar el archivo y dejarlo caer en Visual Studio Code.
43
00:02:49,280 --> 00:02:50,960
Vamos a ser un más grande.
44
00:02:52,090 --> 00:02:52,390
Ok?
45
00:02:53,080 --> 00:02:59,050
Y aquí también les voy a explicar cómo utilizar variables de entorno en el post file, que es bien sencillo,
46
00:02:59,050 --> 00:03:02,710
pero usualmente también tiene su e sus truquitos.
47
00:03:02,710 --> 00:03:09,390
No voy a presionar el botón para crear un nuevo archivo y voy a crear el Docker con post.
48
00:03:09,820 --> 00:03:15,880
Lo llamo y también voy a crear un archivo punto y MB que es de variables de entorno.
49
00:03:16,210 --> 00:03:21,520
Usualmente las variables de entorno no se suben a los repositorios porque aquí están nuestras configuraciones
50
00:03:21,520 --> 00:03:27,070
y nuestras credenciales, por decirlo así, pero ya hablaremos más al respecto de eso.
51
00:03:28,450 --> 00:03:33,700
El punto bien es el mismo que nosotros ya estamos acostumbrados a trabajar en otro tipo de aplicaciones
52
00:03:33,940 --> 00:03:40,420
y la ventaja es que el Docker post ya viene por defecto leyendo los archivos de ambiente que se encuentran
53
00:03:40,420 --> 00:03:42,760
en el mismo nivel de nuestro Docker Campus Fire.
54
00:03:42,970 --> 00:03:44,380
Entonces no tenemos que hacer mucho.
55
00:03:45,220 --> 00:03:53,110
Ok, voy a cerrar esto y empecemos nuestra primera parte del camino de montar estos tres contenedores
56
00:03:53,110 --> 00:03:54,730
empezando con MongoDB.
57
00:03:55,160 --> 00:03:58,150
Entonces, primero empecemos con la versión, la versión tres.
58
00:03:59,020 --> 00:04:01,780
Voy a correr esto por un lado y empecemos con los servicios.
59
00:04:02,230 --> 00:04:03,340
El nombre del servicio.
60
00:04:03,340 --> 00:04:07,080
Le voy a poner base de datos, pero ustedes le pueden poner cualquier nombre, pueden poner en un rango
61
00:04:07,090 --> 00:04:09,250
de V o etc lo que ustedes necesitan.
62
00:04:09,730 --> 00:04:11,110
Voy a presionar Enter Tab.
63
00:04:11,560 --> 00:04:14,280
Dentro de estos servicios, voy a ponerle el nombre.
64
00:04:14,300 --> 00:04:19,930
Mi contenedor Container Name va a ser igual a y podríamos poner como Pokemón de B.
65
00:04:21,120 --> 00:04:23,460
Ok, pokemon t v enter.
66
00:04:23,520 --> 00:04:29,160
La imagen que yo voy a utilizar es la imagen de Mongo en la versión 6.0 o el tag 6.0.
67
00:04:29,160 --> 00:04:32,160
Y por favor hagan la misma que yo o utilicemos la misma que yo.
68
00:04:33,390 --> 00:04:37,330
Luego voy a definir los volúmenes para los volúmenes.
69
00:04:37,350 --> 00:04:40,710
Voy a crearme uno que se llama Poke Bol o algo así.
70
00:04:40,780 --> 00:04:46,740
Está chistoso el nombre y esto va a apuntar a el pack del contenedor donde va a estar la base de datos
71
00:04:46,740 --> 00:04:47,670
que yo no sé cuál es.
72
00:04:47,670 --> 00:04:51,570
Se las voy a dejar de tarea para que la investiguen en este momento, pero denme un segundo.
73
00:04:51,790 --> 00:04:58,170
Al terminar esto, presionen enter y en la mera raíz de nuestro archivo vamos a escribir Valiums.
74
00:04:58,350 --> 00:04:59,670
Voy a poner Pokeball.
75
00:05:00,750 --> 00:05:04,320
Los puntos Enter external, los puntos Falls.
76
00:05:05,130 --> 00:05:12,180
Esto me va a permitir a mi fácilmente poder hacer el cambio si quiero que tome la el volumen externo
77
00:05:12,180 --> 00:05:14,970
o el volumen que ve el Docker
con posts me va a crear.
78
00:05:14,970 --> 00:05:21,270
Si yo lo pongo en true, entonces va a buscar en el ambiente externo de este Docker fiel el volumen
79
00:05:21,270 --> 00:05:23,460
que ya lo habíamos visto como que lo creáramos manualmente.
80
00:05:23,880 --> 00:05:28,830
Si yo lo pongo en false, entonces lo que va a pasar es que cuando yo ejecute este archivo mediante
81
00:05:28,830 --> 00:05:34,620
el docker con post up, va a revisar que tenemos estos volúmenes y va a crear el volumen para este Docker.
82
00:05:34,620 --> 00:05:35,400
Compost fire.
83
00:05:36,240 --> 00:05:37,730
Ok, tarea.
84
00:05:37,800 --> 00:05:43,410
Necesito que ustedes averigüen cual es el paso donde MongoDB graba la información.
85
00:05:43,410 --> 00:05:45,120
Para eso ustedes van a venir aquí.
86
00:05:45,290 --> 00:05:51,990
Va a buscar la imagen oficial de Mongo y por algún lado de todo este documento, por algún lado de todo
87
00:05:51,990 --> 00:05:55,020
esto esta la información del país donde se graba.
88
00:05:55,440 --> 00:06:00,720
Ok, recuerden que tiene que empezar con Slash y por ahí va, entonces supongo le pasa el video, investiguen
89
00:06:00,720 --> 00:06:05,430
donde esta esto y yo regreso con la solución en esta misma clase de unos segundos, pero intenten hacer
90
00:06:05,430 --> 00:06:07,110
esta investigación por ustedes mismos.
91
00:06:07,110 --> 00:06:07,620
Pasa allá.
92
00:06:11,520 --> 00:06:12,630
Ok, Lo lograron hacer?
93
00:06:12,660 --> 00:06:13,320
Espero que sí.
94
00:06:13,320 --> 00:06:15,180
Y si no, pues resolvamos esto juntos.
95
00:06:15,210 --> 00:06:20,010
Usualmente lo que yo hago es buscar algo como la palabra Valium o algo así.
96
00:06:20,160 --> 00:06:20,580
Valium.
97
00:06:22,010 --> 00:06:23,670
Entonces busquemos en la palabra Valium.
98
00:06:23,690 --> 00:06:25,130
Voy a presionar Enter.
99
00:06:25,130 --> 00:06:25,730
Enter.
100
00:06:26,030 --> 00:06:27,620
Y por algún lado tiene que estar.
101
00:06:27,650 --> 00:06:28,210
Vamos a ver.
102
00:06:28,580 --> 00:06:30,400
Se puede crear un directorio.
103
00:06:30,410 --> 00:06:31,080
May on.
104
00:06:31,100 --> 00:06:32,930
Este no es run.
105
00:06:33,420 --> 00:06:33,710
Algo.
106
00:06:33,710 --> 00:06:35,180
Esto no es para esto.
107
00:06:35,180 --> 00:06:36,110
Es para manejar el volumen.
108
00:06:36,110 --> 00:06:37,280
Pero usted ya sabe que es esto.
109
00:06:37,280 --> 00:06:39,740
Esto es un Bin Valium desde el falleciste.
110
00:06:40,700 --> 00:06:41,630
Y aquí está.
111
00:06:41,660 --> 00:06:42,560
Data DB.
112
00:06:42,980 --> 00:06:43,970
Ahí lo tenemos.
113
00:06:44,360 --> 00:06:48,980
Y también ustedes pueden ver que también se crea el archivo de configuración por ahí, por ese lugar.
114
00:06:49,820 --> 00:06:50,180
En fin.
115
00:06:50,180 --> 00:06:52,610
Pero este es el que a mí me está interesando.
116
00:06:52,710 --> 00:06:53,930
Entonces lo voy a pegar por ahí.
117
00:06:54,440 --> 00:06:54,870
Excelente.
118
00:06:54,890 --> 00:06:56,750
Ya con eso vamos a estar grabando.
119
00:06:56,750 --> 00:06:58,670
Todo lo que sucede en la base de datos va a ser persistente.
120
00:06:59,570 --> 00:07:00,290
Voy a venir acá.
121
00:07:00,650 --> 00:07:05,600
Los puertos no son necesarios, no los voy a, lo voy a poner temporalmente, pero después los voy a
122
00:07:05,600 --> 00:07:10,190
quitar porque solo quiero que la aplicación y los que están en la red puedan ver la base de datos,
123
00:07:10,190 --> 00:07:11,300
no el mundo exterior.
124
00:07:11,570 --> 00:07:16,040
Pero por ahora vamos a hacer una prueba de conexión, así que voy a exponer el puerto 27 cero 17, que
125
00:07:16,040 --> 00:07:22,150
es el puerto que expone Mongo con el puerto 27 cero 17 de El contenedor de Mongo.
126
00:07:22,160 --> 00:07:22,850
Este es mi puerto.
127
00:07:22,850 --> 00:07:23,900
Y ese es el puerto de Mongo.
128
00:07:24,990 --> 00:07:29,250
Ahora, adicionalmente, lo voy a dejar colocar aquí.
129
00:07:29,430 --> 00:07:33,450
Start in always start los puntos en always.
130
00:07:36,140 --> 00:07:41,120
Eso es útil cuando ustedes están trabajando con aplicaciones de múltiples contenedores y posiblemente
131
00:07:41,120 --> 00:07:49,310
alguna se cae por alguna razón, o necesitamos volver a levantar cuando sucede algún problema o cuando
132
00:07:49,310 --> 00:07:52,990
una imagen se levanta, entonces que intente volverlo a hacer.
133
00:07:53,000 --> 00:07:57,590
Entonces, hay varias razones por las cuales Crystal Always funciona bastante bien en este caso.
134
00:07:58,160 --> 00:07:59,930
Entonces voy a grabar los cambios.
135
00:07:59,930 --> 00:08:03,170
Esto es básicamente todo lo que yo necesito para la configuración básica.
136
00:08:03,470 --> 00:08:08,720
Muy pronto voy a definir en la próxima clase otras variables de entorno para mi base de datos de Mongo.
137
00:08:08,720 --> 00:08:11,630
Por ejemplo, crearme una base de datos inicial.
138
00:08:11,930 --> 00:08:16,340
Voy a crearme también un par de usuarios y un par de cosas que he, o sea, un usuario root.
139
00:08:16,340 --> 00:08:22,410
Y también quiero que tengamos cierta autenticación porque por defecto voy a escribir OUT.
140
00:08:23,820 --> 00:08:28,350
Por defecto, Mongo viene sin ninguna autenticación.
141
00:08:28,350 --> 00:08:32,910
Aunque si el contenedor está protegido, es decir, no está expuesto, igual tenemos cierto paso de
142
00:08:32,910 --> 00:08:39,060
seguridad, pero igual voy a querer después poner unas credenciales y ejecutar el modo para hacer consultas
143
00:08:39,060 --> 00:08:40,200
de modo autenticado.
144
00:08:41,130 --> 00:08:42,990
Ok, pero ya lo vamos a hacer en la próxima clase.
145
00:08:42,990 --> 00:08:46,050
Pero esto es algo propio de Mongo, que no tiene mucho que ver ahí Docker.
146
00:08:46,200 --> 00:08:49,190
Pero siempre sería bueno que nuestras bases de datos están protegidas, no?
147
00:08:49,830 --> 00:08:51,540
Ok, pero no se preocupe mucho por eso.
148
00:08:51,990 --> 00:08:54,640
Haremos los cambios e intentemos ejecutar esto.
149
00:08:54,660 --> 00:08:59,370
Le voy a pedir que lo hagamos con la PowerShell o terminal desde afuera para que podamos estar ejecutando
150
00:08:59,370 --> 00:09:02,520
estos comandos y fácilmente poder observar lo que sucede.
151
00:09:02,550 --> 00:09:07,980
Entonces vamos a hacer un cd y recuerden navegar a la carpeta de nuestro proyecto que sería Pokemon
152
00:09:08,010 --> 00:09:08,400
App.
153
00:09:08,430 --> 00:09:09,460
Lo dejamos caer aquí.
154
00:09:09,480 --> 00:09:12,960
Enter Docker con post up presionamos.
155
00:09:14,120 --> 00:09:15,290
Eso va a hacer varias cosas.
156
00:09:15,290 --> 00:09:21,200
Como yo no tengo la imagen de Mongo, específicamente la versión o el tag safe, entonces para hacer
157
00:09:21,200 --> 00:09:25,970
la descarga eso puede demorar un poco, porque la base de datos, a pesar de que está comprimida, las
158
00:09:25,970 --> 00:09:27,110
imágenes están comprimidas.
159
00:09:27,770 --> 00:09:29,990
A pesar de eso, puede demorar un poco.
160
00:09:30,620 --> 00:09:33,830
Entonces pueden irse a tomar un café mientras hacen la descarga y regresan.
161
00:09:34,310 --> 00:09:35,810
En mi caso, ya casi termina.
162
00:09:36,810 --> 00:09:42,680
Ya casi termina esta parte de la descarga y una vez se levanta, vamos a hacer una prueba de conexión
163
00:09:43,040 --> 00:09:48,350
que como todavía no hemos puesto ninguna regla y van a ver que ya está corriendo Mongo de B, tenemos
164
00:09:48,350 --> 00:09:49,970
este montón de logs, que eso está bien.
165
00:09:50,360 --> 00:09:51,800
Vamos a abrir Table Plus.
166
00:09:53,940 --> 00:09:54,210
Ok.
167
00:09:55,020 --> 00:09:57,060
Vamos a crear una nueva conexión.
168
00:09:57,450 --> 00:09:58,680
Seleccionemos Mongo.
169
00:09:58,680 --> 00:09:59,370
Crear.
170
00:10:00,340 --> 00:10:01,390
Y aquí van a ver el nombre.
171
00:10:01,390 --> 00:10:05,320
Voy a ponerle temporal porque debe o cualquier cosa.
172
00:10:05,920 --> 00:10:09,250
El URL viene con el protocolo de Mongo de las islas.
173
00:10:09,340 --> 00:10:14,920
Viene el local host, el puerto, seguido de en este caso alguna base de datos, pero por ahora lo único
174
00:10:14,920 --> 00:10:19,450
que vamos a hacer es escribir Mongo DB que eso sería nuestro protocolo.
175
00:10:19,450 --> 00:10:26,440
Dos puntos y Slash, Slash y como nosotros estamos exponiendo el puerto, tenemos acceso al local host
176
00:10:26,440 --> 00:10:34,930
en nuestro equipo, el puerto que tenemos habilitado por defecto, cual es el puerto es el 27 cero 17
177
00:10:35,290 --> 00:10:37,030
y hagamos el test de conexión.
178
00:10:37,270 --> 00:10:38,860
Vamos a ver que aquí se movió a algo.
179
00:10:39,690 --> 00:10:39,830
Ven?
180
00:10:40,110 --> 00:10:46,300
Cada vez que yo toco es porque la conexión se realiza, puedo darle guardar, puedo ingresar, presionar,
181
00:10:46,300 --> 00:10:50,920
control R Tratar de listar las bases de datos y estas son las bases de datos que nosotros tenemos por
182
00:10:50,920 --> 00:10:52,510
defecto an config y local.
183
00:10:52,930 --> 00:10:56,440
Si yo intento crear una nueva, esa opción no está soportada en estos momentos.
184
00:10:56,440 --> 00:11:00,700
Puede ser que con ustedes lo miren ya funcione, pero en este momento no, Pero de todos modos no necesito
185
00:11:00,700 --> 00:11:04,120
hacer eso, con que podamos ver esa base de datos es mas que suficiente y cierro.
186
00:11:05,110 --> 00:11:05,350
Ok.
187
00:11:05,800 --> 00:11:09,190
Eso significa que ya teníamos nuestra base de datos corriendo muy fácilmente.
188
00:11:09,220 --> 00:11:14,860
Voy a cancelar esto con Control C, y si ustedes quieren bajar o hacer la limpieza, porque recuerden
189
00:11:14,860 --> 00:11:23,260
que la parte de Docker y cuando yo lo cancelo con control, simplemente deja esto detenido.
190
00:11:23,260 --> 00:11:28,600
Pero si yo necesito limpiarlo, recuerden, sería Docker Compass Down y esto ya lo remueve.
191
00:11:29,080 --> 00:11:33,940
Ok, dejemos la clase hasta este punto y hagamos otras configuraciones adicionales y usemos esas variables
192
00:11:33,940 --> 00:11:35,350
de entorno que nosotros ya definimos.
193
00:11:35,350 --> 00:11:37,960
Bueno, por lo menos las creamos, pero todavía no estamos usando.
194
00:11:38,410 --> 00:11:40,030
Y hagamos esto en la próxima clase.
195
00:11:40,120 --> 00:11:40,360
Ok?

Continuar navegando

Materiales relacionados

5 Docker Compose - Multi Container Apps

SIN SIGLA

User badge image

sarasolarocio412

5 pag.
7 BASES DE DATOS

SIN SIGLA

User badge image

FERNANDO REINA