Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Back end vs Front end - Vídeo 5 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Configurando Docker / Docker-compose.yml / mongo / mongo-express
bueno en este vídeo vamos a ver cómo configurar docker para poder utilizar
00:00:00
mongodb y los ficheros con los que vamos a trabajar nosotros en formato
00:00:05
vson o bueno como les soléis conocer vosotros json jugando con el clave valor
00:00:12
vale lo primero que hago o lo primero que tenéis que hacer es descargaros el
00:00:20
docker desktop vale el docker desktop es un programa chiquitín
00:00:25
qué es el que os va a ir mostrando qué imágenes os habéis descargado volumen
00:00:32
volúmenes los contar los contenedores vale diferentes opciones ahora mismo las
00:00:38
que me interesa son estas tres que son con las que vamos a trabajar
00:00:45
vale entonces necesito tener este programa instalado en vuestro equipo en los equipos
00:00:49
del instituto ya viene instalado en la maqueta vale y bueno pues tenemos una forma de buscar
00:00:59
imágenes en el docker hub que también lo podemos hacer desde el propio navegador vale yo tengo en
00:01:08
el navegador abierto el docker hub y aquí buscaría pues por ejemplo el mundo vale y
00:01:15
entonces en el mundo me van a salir diferentes imágenes que son las que nos vamos a descargar
00:01:24
para crear nuestro contenedor vale sí vamos a ver aquí al docker desktop nos encontramos estas
00:01:30
opciones a la izquierda vale unas son los contenedores que es las imágenes que
00:01:45
nosotros nos bajamos ahora mismo no tengo ninguna
00:01:51
cuando las cargamos cuando las lanzamos vamos a tener que crearnos un contenedor
00:01:56
vale el docker es una forma de trabajar utilizando la virtualización vale eso
00:02:02
que significa que los datos no son persistentes entonces
00:02:10
docker nos proporciona un camino para hacerlos persistentes y
00:02:17
además no tener que estar arrancando esos contenedores que a veces hay que
00:02:24
estar pasando de parámetros como puede ser el puerto como pueden ser
00:02:30
el tipo de red que vas a usar vale usuarios password no sé los típicos parámetros pero
00:02:35
que al final se te olvidan oa la hora de lanzarlo desde un terminal es un poco engorroso vale entonces
00:02:43
nos proporcionan nos da un camino para hacer esos datos primero que sean persistentes o sea que
00:02:52
cuando yo termino de trabajar con el contenedor de docker que los datos que en este caso como
00:02:59
vamos a trabajar con mongo se queden guardados en el equipo y además una forma muy cómoda de
00:03:06
arrancar los vale entonces para hacer eso existe el docker punto compost vale que es un fichero
00:03:13
pero con una extensión que es YML, que viene del YAM, es un lenguaje de programación que nos sirve para serializar objetos, vamos, datos,
00:03:25
¿vale? ¿Qué es serializar los datos? Pues coger objetos, los paso a byte, de tal forma que luego podemos transmitirlos o trabajarlos
00:03:40
para poder guardarlos en caché, en una base de datos, en un fichero, ¿vale?
00:03:53
Entonces, bueno, tiene una cierta semejanza quizás, si queréis, con el JSON, que recordar,
00:03:58
o el BSON, que son clave-valor, clave-valor, pero el JAM es un lenguaje de programación.
00:04:06
Ojo, no es un lenguaje de etiquetas, ¿vale?
00:04:14
Que hay mucha gente por ahí que va diciendo que es lenguaje de etiquetas, no es un lenguaje de etiquetas.
00:04:18
y parte de lo que nos permite es la serialización de datos vale que para
00:04:23
nosotros es cómodo y docker.com post nos pide un fichero en
00:04:28
ese formato por eso el fichero es docker guión medio con post
00:04:36
punto y ml vale eso es lo que vamos a hacer ahora bueno entonces este es el
00:04:42
docker desktop vale estas son las tres opciones que tenemos que ir controlando vale entonces
00:04:49
nosotros desde aquí podríamos ir al hub que lo tengo aquí abierto podríamos venirnos por ejemplo
00:04:54
a mongo en mongo lo pulsamos nos pone aquí ya cómo lanzar o cómo hacer un pool no como traernos
00:05:01
a nuestro equipo esta imagen mongo vale te dice vale pues pondo que pulmón vale entonces si tú
00:05:09
haces eso se te va a descargar en tu equipo y luego podríamos aquí tenéis
00:05:17
todas las opciones vale como usar esta imagen entonces dices el docker run el
00:05:21
guión medio guión medio names and mongo vale el contenedor le llama algo de
00:05:27
mongo de mongo y una etiqueta no bueno entonces veis esto es lo que os digo
00:05:32
que si usamos el docker compost también esto lo vamos a escribir dentro de ese
00:05:39
fichero y ml vale entonces no tengo que estar primero recordando lo y luego escribiendo lo
00:05:44
cada vez que quiero arrancar ese contenedor vale recordar que docker descargas una imagen creas
00:05:53
un contenedor en este caso el son mongo y trabajamos sobre el contenedor vale entonces
00:06:00
aquí me va dando diferentes informaciones aquí tenemos veis este es un fichero el docker compost
00:06:07
punto y ml este es el fichero que vamos a crear vale entonces ya en la propia ayuda de esa imagen
00:06:13
ya nos está diciendo vale pues ahí tienes que meter el email el restar vale para que se reinicie
00:06:22
siempre el always environment en mongo express vale entonces voy a hacer un fichero que es muy
00:06:30
similar a este y mientras lo vamos haciendo pues lo vamos lo vamos viendo vale entonces
00:06:39
esta sería una forma de trabajar directamente con el docker ya instalado el docker de esto yo me
00:06:47
vendría al hub me bajaría una imagen y luego la arrancaríamos como nos dice en la ayuda ya está
00:06:53
Vale, vamos a trabajar desde el Docker Compose, vale, entonces para hacer eso nos vamos a venir a nuestro Visual Studio Code, vale, a ver si estamos, vale, en el Visual Studio Code,
00:07:00
lo primero que voy a hacer es crearme dentro de la carpeta de proyecto dan 2
00:07:29
un fichero que le vamos a poner el nombre que hemos dicho
00:07:36
ese nombre tiene que ser siempre así
00:07:42
entonces voy a seleccionar esa carpeta
00:07:44
creo el fichero y le voy a llamar docker-medio.iml
00:07:47
Vale, vale, bueno, esto fijaros que cuando le he metido ya el docker-compose.iml ya me aparece aquí la ballenita de Mongo, perdón, de Docker y las diferentes carpetas y ficheros que habíamos hecho hasta ahora también les he metido unos iconos, ¿vale?
00:07:58
esto como como lo hago bueno si me vengo a las extensiones del
00:08:22
code fijaros que me he instalado estas vale entonces el wsl el material con los
00:08:26
temas de iconos que este es el que me hace que me aparezcan los dibujillos
00:08:35
vale docker que me va a permitir trabajar luego con las contenedores que
00:08:40
tengo cargados vale y el de container porque bueno pues cuando estás haciendo el docker
00:08:46
con que usted dicen que instales el de containers y el docker vale te dicen que cargue las dos
00:08:54
extensiones que te van a facilitar el desarrollo vale entonces estamos con docker compute y ml vale
00:09:00
Pues entonces lo que vamos a hacer es, primero le voy a dar la versión, ¿vale?
00:09:09
La versión del Docker Compute que vamos a utilizar.
00:09:18
Entonces, es importante a la hora de crear estos ficheros el tema de las tabulaciones.
00:09:22
Tenéis que tener mucho cuidado, ¿vale?
00:09:28
Si alguna tabulación no está bien puesta, os va a dar un error.
00:09:30
Entonces, tenéis que tener mucho cuidado.
00:09:37
Recordad que un fichero Jam es un lenguaje de programación y como tal, como puede ser el Python, como puede ser las tabulaciones, hay que respetarlas mucho, ¿vale?
00:09:39
Bueno, entonces, tengo versión, vale, ya me aparece aquí, versión.
00:09:53
¿Qué versión le voy a poner? Pues le voy a poner la última, 2.28.1, ¿vale?
00:09:59
¿Cómo es que esta es la última versión?
00:10:04
Bueno, pues yo me voy al navegador
00:10:12
Y vamos a ver en el navegador
00:10:14
Vamos a ver que está bien, vale
00:10:22
Tengo Docker Compute Relays Note
00:10:24
Que es las versiones que están disponibles para descargarla
00:10:27
la última en la 228 1 que podríamos utilizar cualquiera de todas estas vale para yo voy a
00:10:35
poner la 2.28 punto 1 a ver si no nos da ningún problema vale lo siguiente que le voy a decir son
00:10:40
los servicios service que quiero con los que quiero trabajar en este caso voy a trabajar con
00:10:49
mongo y voy a trabajar con mongo express mongo este el que va a funcionar como el servidor vale
00:10:58
es al que nos vamos a conectar vamos a crear nuestras bases de datos mongo debe recordar
00:11:06
bases de datos que no son sql vale lo que es el servidor y lo que voy a hacer con mongo guión
00:11:12
medio exprés que vamos a ver dónde lo tenía en el hub me
00:11:22
aparece que me parecía si vale entonces si me vengo a esta
00:11:30
pantalla veis tengo el mongo por un lado y tengo el mongo exprés
00:11:39
este es un cliente vale entonces nos va a servir es un cliente web nos va a
00:11:45
servir para trabajar sobre el mongo
00:11:50
bueno pues de una forma más amigable os va a dar una interfaz gráfica vale y
00:11:55
siempre va a ser más amigable que estar desde el terminal lanzando los comandos
00:12:00
vale entonces volvemos a nuestro código tenemos
00:12:05
mongo vale o sea queremos mongo y queremos mongo express volvemos al
00:12:10
visual studio code en el visual estudio que tengo los
00:12:14
servicios entonces yo los dos servicios que me quiero descargar es en el mongo
00:12:18
y el mongo express vale entonces voy a descargar primero el mongo entonces lo
00:12:24
primero que te dice es que servicio es el que quieres descargar mongo
00:12:29
vale qué dos puntos que es vamos a ver
00:12:35
vale el nombre que me aparece en la imagen mongo vale y ahora lo que le voy a empezar a pasar es
00:12:43
los valores que tengo que meter dentro de este servicio o sea los parámetros que quiero que
00:12:52
tenga ese servicio vale entonces el primero tabulo le pongo image vale qué imagen qué nombre de la
00:12:59
imagen es el que quiero que que descargue vale me vuelvo a mí y entramos en la imagen y el nombre
00:13:08
es el que aparece con el docker pool es esta vale es esta entonces veis que es mongo vale
00:13:21
con el mongo express pues vemos que es mongo express vale entonces cuando haga el servicio
00:13:29
del mongo express vais a ver que pondré mongo express vale entonces
00:13:36
en image le vamos a meter mongo vamos a ver le vamos a poner
00:13:44
no vale nombre del contenedor o sea contain vale que el nombre le voy a poner al contenedor pues
00:13:52
aquí le podéis dar el nombre que queráis yo le voy a dar el mismo mongo vale si quiero que se reinicie
00:14:05
pues cada vez que hacemos algún cambio cada vez que trabajamos sobre la base de datos o que se
00:14:16
cierra por lo que sea pues queremos que se reinicie vale entonces le metemos el restart dos puntos
00:14:22
vale vale qué puertos voy a utilizar para este mongo este servicio recordar que mongo lo que
00:14:28
hace es se convierte convierte en nuestro equipo en este caso porque estamos trabajando en local
00:14:44
estoy con docker vale aunque podría hacerlo para que se pudieran conectar diferentes clientes a
00:14:50
nuestro servicio bueno pues aquí el puerto que suele ser por defecto los puertos vale son el
00:14:57
27 0 17 dos puntos 27 0 17 vale aquí fijaros que cambió la anotación le pongo un guión comillas
00:15:07
estos dos puntos bueno recordar que esto es un mapeo vale le estoy diciendo estoy mapeando el
00:15:22
puerto del servicio contra el puerto de mi ordenador recordar que el mongo compute lo
00:15:29
que estás haciendo es hacer persistente vale está esta virtualización entonces esto cuando veáis que
00:15:35
repito los números o le meto los dos puntos o esto es un mapeo esto estoy mapeando estos puertos el
00:15:46
Por un lado el del contenedor, con el de la máquina, con el del host. ¿Vale? ¿Qué más le podemos o le tenemos que pasar? Bueno, hemos quedado en, cuando estamos con el Docker, vamos a ver, cuando estamos con el Docker Desktop, ¿vale?
00:15:52
Que teníamos los contenedores, tenemos las imágenes, las imágenes son las que nos bajamos, las que creamos contenedores, tenemos los volumes. Los volumes, los volúmenes son carpetas en las que yo voy a guardar esos datos. Obviamente, si queremos hacer esos datos persistentes, necesito alguna ubicación donde guardarlos, ¿vale?
00:16:18
Entonces, eso también se lo tenemos que pasar, así que vamos a ponerle aquí, volumes, y le voy a decir, pues que lo guarde en nuestra carpeta de proyecto, ¿vale?
00:16:38
Entonces le vamos a meter, ¿dónde estás? Aquí, le voy a meter, vale, ya le digo, desde desktop, vale, la ruta donde estoy en el escritorio, la carpeta donde tengo la carpeta de proyecto, proyecto, dan dos, barra,
00:17:01
y el nombre de la carpeta donde voy a guardar esos datos, pues que suele ser data, y aquí voy a mapear esos datos, data.db, vale, esos datos que estoy generando en el contenedor, vale, mapeo, contenedor, el host, vuestra máquina, vale,
00:17:31
Vale, pues ya tenemos también el volumes, tenemos los puertos, tenemos que, le hemos dicho que si se cae, por lo que sea, que se vuelva a levantar, el nombre del contenedor, el nombre de la imagen, ¿qué más nos hace falta?
00:17:57
el tipo de networks vale el tipo de network sí y seguro que si habéis trabajado con virtualbox
00:18:17
sabéis que podéis poner la red de diferentes tipos en diferentes tipos de diferentes formas
00:18:28
vale utilizando diferentes drivers no aquí pasa lo mismo aquí le podemos decir que uses la red
00:18:34
de una forma o de otra dependiendo de qué objetivo es el que estamos buscando vale
00:18:40
Entonces, si nos venimos al navegador, aquí en Network Drivers, en Overview, tenemos los diferentes tipos y la explicación, ¿vale?
00:18:46
Es importante que uséis también la documentación técnica, ¿vale?
00:19:03
Que eso luego las empresas nos dicen que no la usáis demasiado y esto hay que estar mirándolo constantemente.
00:19:06
Vale, entonces tengo el bridge, el host, el overlay, el ipvlan, macvlan, ninguna, bueno, pues yo el que voy a utilizar es el bridge, vale, entonces me vengo a nuestro visual studio code y vamos a usar bridge, bridge, vale, vale.
00:19:14
Vale, pero esto no lo voy a poner así, pues claro, como vamos a hacer diferentes puertos, esto en vez de hacerlo así, lo que se hace es, a la altura de servicios, vamos a meter un otro parámetro que es network.
00:19:50
vale y ahí es donde vamos a configurar ese driver entonces aquí vamos a meter network aquí le voy
00:20:17
a decir cómo se va a llamar ese network que va a ser pues por ejemplo mongo network vale y aquí
00:20:25
le vamos a decir que el driver es el bridge vale y aquí lo que le voy a pasar ahora es el nombre
00:20:35
que le he dado mongo guión medio network vale así puedo ir diciendo el driver en los diferentes
00:20:45
servicios que estoy configurando vale entonces el servicio de mongo ya estaría ya le he dicho
00:20:54
con el docker compost le cuando lo lance
00:21:04
le decimos qué imagen queremos bajar le decimos cómo queremos que se llame ese contenedor todas
00:21:11
estas opciones vale ahora otro otro servicio que quiero bajar es el mundo express y igual que antes
00:21:19
vamos a ir pasando las diferentes los diferentes parámetros la imagen pues
00:21:33
como os he enseñado antes era mongo y el medio express vale
00:21:41
en este caso le voy a meter dos puntos y voy a poner la versión valente de las
00:21:47
versiones la 1.0 punto 2 medio 20
00:21:53
bueno le voy a pasar esta vale esta versión podríamos pasarle cualquiera y
00:22:12
desde el hub donde está la imagen es desde donde podemos verla entonces si
00:22:17
nos venimos
00:22:23
aquí vemos qué vamos a ver
00:22:25
aquí vale aquí tengo las diferentes versiones
00:22:33
entonces veis que he bajado la 1.0 tal al pin 3.19 vale es interesante esto del
00:22:40
mongo express
00:22:48
tenéis en configuración tenemos todas estas variables de environment de
00:22:52
entorno que nos van a servir y que vamos a utilizar ahora vale entonces pues para
00:22:56
meter los username y user password del root o de otros usuarios para decir
00:23:03
qué puerto voy a utilizar de conexión es que ya por defecto me dice el 27 017
00:23:10
vale entonces voy a usar alguna de estas lo voy a dejar aquí para ir copiando y
00:23:15
pegando vale pero recordar que la saco de la configuración de la imagen del
00:23:19
mongo express vale entonces tenemos el mongo exprés
00:23:24
tal el 319 que es lo que hemos dicho vale este vale
00:23:29
tenemos vamos a dejar esto aquí vamos a seguir aquí vamos a seguir aquí vale por un lado era
00:23:37
la imagen a otro el container name y aquí pues le vamos a poner un expreso vale los puertos
00:23:53
cual le voy a pasar aquí aquí le tienes que pasar un puerto que es el del cliente vale
00:24:06
entonces ese se suele usar el 8081 y igual que antes lo que hago es mapear el contenedor con
00:24:17
el del host vale le pasamos un parámetro que antes no he usado que es el de las dependencias
00:24:26
con que va a tener de qué dependencia va a tener este mango express pues de
00:24:34
mongo vale de este otro contenedor entonces ahí le vamos a meter mongo
00:24:38
vale que más le vamos a decir pues las variables que os decía antes de entorno vale entonces aquí
00:24:46
le voy a pasar el environment aquí estás y aquí le voy a ir pasando veis os pone el name y ese
00:24:55
ese valor vale entonces vamos a meter primero vamos a poner este y me vengo aquí vale
00:25:02
le voy a meter pues un username vale que luego me lo va a pedir cuando lance el express entonces le
00:25:21
voy a meter uno de administrador y otro de un usuario estándar y le voy a poner a los dos
00:25:28
root así no me olvido vale le voy a meter a este root la password va a ser con la variable de entorno
00:25:34
Igual
00:25:45
Root
00:25:53
Le voy a meter
00:25:57
El puerto
00:25:58
El puerto que
00:26:03
Hemos dicho que era el 27017
00:26:18
¿Vale?
00:26:21
Recordar que ese es el puerto
00:26:22
Con el que queréis conectar este cliente
00:26:25
27017 que es el del Mongo
00:26:27
¿Vale?
00:26:29
y vamos a meter el usuario y password del administrador, username igual root y password root,
00:26:31
vale y ya tendría todas las variables de entorno que me hacen falta que me que le
00:27:09
tengo que decir ahora pues igual que antes
00:27:18
le tendré que decir por un lado el network y luego hay otra variable
00:27:21
que es el link vale que es
00:27:27
pues eso un poco va con la de las dependencias en un por un lado son las
00:27:33
dependencias y por otros con que está aplicando ese cliente entonces igual que
00:27:36
que antes le hemos puesto el mongo, pues aquí le vamos a pasar el mongo.
00:27:41
Vale, y por último, network.
00:27:51
Que como antes, hemos dicho que era mongo-medio-network, ¿vale?
00:27:58
Sin la S, ¿vale?
00:28:06
Recordad que lo hemos llamado sin la S.
00:28:08
Bueno, este sería nuestro fichero de docker-compose.iml, ¿vale? Esto lo que hace cuando lo arranque, cuando lo lance, es descargar las imágenes, configurarlas y tener ya el servidor y el cliente listos para empezar a trabajar, ¿vale?
00:28:11
¿Cómo lanzo esto? Me vengo a mi terminal, le meto el docker app-d para que me lo haga en segundo plan, ¿vale? docker app-d, ¿vale? Aquí, si no hay ningún fallo, que parece que sí, a ver, vale, aquí me he equivocado, lo he escrito mal, no es docker app-d, estamos con el fichero que es el docker compose, ¿vale? Perdón.
00:28:38
Entonces, aquí le vamos a meter docker-compose, esto sí, app-d.
00:29:20
Vale, y aquí, si esto está bien, entonces, a ver, se lo hice mal, pero bueno, restart es no, a ver, vale, había escrito mal restart, vale,
00:29:33
entonces volvemos al tercer intento lo mismo docker-compose a menos de vale
00:29:54
ahí ya se ha puesto o se pone a descargar los vale ya está haciendo el
00:30:02
pooling del mongo express y del mongo vale
00:30:07
ahora vamos a ver qué es lo que nos creará nos dirá que está todo bien
00:30:12
espero y nos da el primero que hay ahí no está el segundo nos dice el create
00:30:15
start y restart vale si me voy ahora a docker veo que tengo los dos
00:30:22
contenedores activos si nos vamos
00:30:31
al docker desktop vamos a ver
00:30:37
a ver que estamos aquí
00:30:46
nos vamos al docker desktop vemos que tenemos el container que es proyecto
00:30:50
Dan2 porque tenemos el Mongo Compose dentro de nuestro proyecto Dan2, que dentro de ese
00:30:57
contenedor tenemos otros dos, ¿vale? Bueno, en realidad estos son los contenedores, este
00:31:05
es el proyecto en el que están, ¿vale? Que tenemos las imágenes que nos las ha descargado
00:31:10
las dos, Mongo y Mongo Express, que tenemos ese directorio para guardar los datos y esto
00:31:16
es que nos funciona todo bien. Si volvemos a nuestro Visual Studio Code, si ponemos aquí
00:31:25
docker ps-a, aquí me va a enseñar todas las opciones,
00:31:38
todos los parámetros de esos contenedores. Entonces tenéis el ID del container, que para
00:31:47
luego borrarlo si queréis hacerlos del terminal es importante vale y que pues el estado los puertos
00:31:53
que les hemos dado lo tenemos todo y lo tenemos arrancado vale teníamos el mongo de beck si yo
00:32:00
abro ahora me vengo a mi página a mi navegador le ponemos e intentamos acceder localhost a nuestro
00:32:08
cliente vale hemos dicho que mongo express en el puerto 8081 es nuestro cliente accedemos lo
00:32:25
primero que nos pide es el nombre de usuario la contraseña este es root y este es root que es lo
00:32:34
que le hemos pasado cuando estábamos con el fichero de jam inicio sesión veis y ahora tengo
00:32:41
esta interfaz gráfica para poder trabajar en el Mongo y empezar a crear las bases de datos que quiera, ir metiendo registros, ¿vale?
00:32:49
Todas las opciones, estas son las que nos dejan por defecto Mongo para, bueno, pues para trabajar si queréis, que las podéis borrar si queréis
00:33:01
y ya estaríamos preparados para empezar a trabajar desde nuestro desarrollo del backend con MongoDB.
00:33:09
Un saludo. Hasta luego.
00:33:22
- Idioma/s:
- Autor/es:
- Mario S.
- Subido por:
- Mario S.
- Licencia:
- Dominio público
- Visualizaciones:
- 156
- Fecha:
- 8 de julio de 2024 - 13:50
- Visibilidad:
- Público
- Centro:
- IES VILLABLANCA
- Duración:
- 00′ 14″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 89.58 MBytes