You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 01-contenedores/contenedores-vi/README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Día VI: Docker Compose y Docker Swarm 🚀
2
2
3
-

3
+

4
4
5
5
## 📋 Agenda
6
6
@@ -191,6 +191,8 @@ docker compose -p my_wordpress down
191
191
192
192
## 🌊 Introducción a Docker Swarm
193
193
194
+

195
+
194
196
Docker Swarm es el orquestador nativo de Docker que te permite crear y gestionar un cluster de nodos Docker. Es perfecto para aplicaciones que necesitan alta disponibilidad y escalabilidad.
Dockeriza la aplicación dentro de [lemoncode-challenge](./), la cual está compuesta de 3 partes:
5
+
>[!IMPORTANT]
6
+
> Antes de lanzarte a contenerizar todo, ¡relájate y prueba la aplicación tal como está! 😌 Lo único que necesitas es tener MongoDB funcionando. Empieza creando MongoDB en Docker y usa un cliente como MongoDB Compass (¡que ya viste en clase!) para añadir datos que tu API pueda devolver. A partide aquí ya estás list@ para comprobar lo que has aprendido.
6
7
7
-
- Un front-end con Node.js
8
-
- Un backend en .NET (`dotnet-stack`) o en Node.js (`node-stack`) que utiliza un MongoDB para almacenar la información.
9
-
- El MongoDB donde se almacena la información en una base de datos.
8
+
## 🎯 Misión 1: Dockeriza como un Pro
10
9
11
-
Nota: como has podido comprobar, el directorio `lemoncode-challenge` tiene dos carpetas: `dotnet-stack` y `node-stack`. En ambos casos el frontend es el mismo, sólo cambia el backend. Usa el stack que prefieras.
10
+
¡Es hora de poner en práctica todo lo aprendido! 💪 Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), que está compuesta de 3 partes increíbles:
12
11
13
-
### Requisitos del ejercicio
12
+
- 🌐 **Frontend**: Una interfaz con Node.js
13
+
- ⚙️ **Backend**: Elige tu aventura - .NET (`dotnet-stack`) o Node.js (`node-stack`) que se conecta con MongoDB
14
+
- 🗄️ **Base de datos**: MongoDB para almacenar toda la información
14
15
15
-
1. Los tres componentes deben estar en una red llamada `lemoncode-challenge`.
16
-
2. El backend debe comunicarse con el mongodb a través de esta URL `mongodb://some-mongo:27017`.
17
-
3. El front-end debe comunicarse con la api a través de `http://topics-api:5000/api/topics`.
18
-
4. El front-end debe estar mapeado con el host para ser accesible a través del puerto 8080.
19
-
5. El MongoDB debe almacenar la información que va generando en un volumen, mapeado a la ruta `/data/db`.
20
-
6. Este debe de tener una base de datos llamada `TopicstoreDb` con una colección llamada `Topics`. La colección `Topics` debe tener esta estructura:
16
+
> 💡 **¡Libertad de elección!** Como habrás notado, tienes dos carpetas: `dotnet-stack` y `node-stack`. El frontend es idéntico en ambos casos, solo cambia el backend. ¡Elige el que más te motive!
17
+
18
+
### 📋 Misión: Cumple estos requisitos
19
+
20
+
1. 🌐 Los tres componentes deben vivir en armonía en una red llamada `lemoncode-challenge`
21
+
2. 🔗 El backend debe comunicarse con MongoDB usando esta URL mágica: `mongodb://some-mongo:27017`
22
+
3. 🚀 El frontend debe conectar con la API mediante: `http://topics-api:5000/api/topics`
23
+
4. 🌍 El frontend debe ser accesible desde tu navegador en el puerto `8080`
24
+
5. 💾 MongoDB debe persistir los datos en un volumen mapeado a `/data/db`
25
+
6. 📊 Crea una base de datos llamada `TopicstoreDb` con una colección `Topics` que tenga esta estructura:
21
26
22
27
```json
23
28
{
@@ -26,18 +31,30 @@ Nota: como has podido comprobar, el directorio `lemoncode-challenge` tiene dos c
26
31
}
27
32
```
28
33
29
-
¡Añade varios registros!
34
+
🎉 **¡No olvides añadir varios registros para hacer tu app más interesante!**
30
35
31
-
__Tip para backend__: Antes de intentar contenerizar y llevar a cabo todos los pasos del ejercicio se recomienda intentar ejecutar la aplicación sin hacer cambios en ella. En este caso, lo único que es posible que “no tengamos a mano” es el MongoDB. Por lo que empieza por crear este en Docker, usa un cliente como el que vimos en el primer día de clase (MongoDB Compass) para añadir datos que pueda devolver la API.
36
+
__Tip para backend__: Antes de intentar contenerizar y llevar a cabo todos los pasos del ejercicio se recomienda intentar ejecutar la aplicación sin hacer cambios en ella. En este caso, lo único que es posible que “no tengamos a mano” es el MongoDB. Por lo que empieza por crear este en Docker, usa un cliente como MongoDB Compass para añadir datos que pueda devolver la API.
32
37
33
38

34
39
35
-
Nota: es más fácil si abres Visual Studio Code desde la carpeta `backend` para hacer las pruebas y las modificaciones que si te abres desde la raíz del repo. Para ejecutar este código solo debes lanzar `dotnet run` si usas el stack de .NET, o `npm install && npm start` si usas el stack de Node.js.
40
+
> 💎 **Pro Tip**: Abre Visual Studio Code directamente desde la carpeta `backend` para hacer las pruebas. ¡Te ahorrará tiempo! Para ejecutar el código:
41
+
> - .NET stack: `dotnet run`
42
+
> - Node.js stack: `npm install && npm start`
36
43
37
-
__Tip para frontend__: Para ejecutar el frontend abre esta carpeta en VS Code y ejecuta primero `npm install`. Una vez instaladas las dependencias ya puedes ejecutarla con `npm start`. Debería de abrirse un navegador con lo siguiente:
44
+
**🎨 Para el Frontend**:
45
+
Abre la carpeta frontend en VS Code y ejecuta `npm install` para instalar las dependencias. Luego `npm start` y ¡voilà! Tu navegador debería mostrar algo así:
38
46
39
47

40
48
41
-
## Ejercicio 2
49
+
## 🎪 Misión 2: ¡Docker Compose al Rescate!
50
+
51
+
¡Ahora viene la parte divertida! 🎊 Toma tu aplicación dockerizada de la misión 1 y usa Docker Compose para orquestar todas las piezas como un director de orquesta.
52
+
53
+
### 🎯 Tu misión incluye:
54
+
- 🌐 Configurar la red que conecta todos los servicios
55
+
- 💾 Definir el volumen que necesita MongoDB para persistir datos
56
+
- 🔧 Establecer las variables de entorno necesarias
57
+
- 🚪 Exponer los puertos correctos para web y API
58
+
- 📝 Documentar los comandos para levantar, parar y eliminar el entorno
42
59
43
-
Ahora que ya tienes la aplicación del ejercicio 1 dockerizada, utiliza Docker Compose para lanzar todas las piezas a través de este. Debes plasmar todo lo necesario para que esta funcione como se espera: la red que utilizan, el volumen que necesita MongoDB, las variables de entorno, el puerto que expone la web y la API. Además debes indicar qué comandos utilizarías para levantar el entorno, pararlo y eliminarlo.
60
+
¡Demuestra que eres un maestro de la orquestación de contenedores! 🎭✨
0 commit comments