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
La misma aplicación está disponible en dos stacks tecnológicos diferentes para el backend: .NET y Node.js. El frontend es idéntico en ambos casos. ¡Tú eliges cuál usar!
15
+
16
+
Está compuesta de tres componentes principales:
11
17
12
18
- 🌐 **Frontend**: Una interfaz con Node.js
13
19
- ⚙️ **Backend**: Elige tu aventura - .NET (`dotnet-stack`) o Node.js (`node-stack`) que se conecta con MongoDB
14
20
- 🗄️ **Base de datos**: MongoDB para almacenar toda la información
15
21
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!
22
+
> 💡 **¡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! O puedes hacer las dos si quieres.
17
23
18
24
---
19
25
20
26
### 🔥 Reto 1: MongoDB en Contenedor
21
27
22
-
**Objetivo**: Ejecutar MongoDB dentro de un contenedor y conectar el backend (ejecutándose localmente) para que pueda recuperar, crear, modificar y eliminar Topics.
28
+
**Objetivo**: Ejecutar MongoDB dentro de un contenedor y conectar el backend (ejecutándose localmente) para que pueda recuperar, crear, modificar y eliminar clases de la base de datos.
23
29
24
30
#### 📋 Requisitos:
25
31
1. ✅ Crear una red Docker para la comunicación
26
32
2. ✅ Ejecutar MongoDB en un contenedor con persistencia de datos
27
-
3. ✅ Crear la base de datos `TopicstoreDb` con la colección `Topics`
28
-
4. ✅ Ejecutar el backend localmente conectándose a MongoDB
29
-
5. ✅ Verificar que el CRUD funciona correctamente
33
+
4. ✅ Ejecutar el backend localmente conectándose a tu nuevo MongoDB
34
+
5. ✅ Verificar que el CRUD funciona correctamente usando la extensión REST Client y el archivo `backend/client.http` del stack que hayas elegido
35
+
6. ✨ Puedes instalar la extensión de [MongoDB for VS Code](https://marketplace.visualstudio.com/items?itemName=mongodb.mongodb-vscode) o usar MongoDB Compass para verificar que los datos se almacenan correctamente
30
36
31
-
#### 💡 Tips:
32
-
- Usa MongoDB Compass o la extensión [MongoDB for VS Code](https://marketplace.visualstudio.com/items?itemName=mongodb.mongodb-vscode) para añadir datos
33
-
- Para ejecutar el backend localmente:
34
-
- .NET stack: `dotnet run`
35
-
- Node.js stack: `npm install && npm start`
36
-
- Estructura de documento esperada:
37
-
```json
38
-
{
39
-
"_id": { "$oid" : "5fa2ca6abe7a379ec4234883" },
40
-
"topicName" : "Contenedores"
41
-
}
42
-
```
37
+
¡Perfecto! Si has llegado hasta aquí, ya tienes MongoDB corriendo en un contenedor y tu backend puede comunicarse con él. ¡Buen trabajo! 🎉
43
38
44
39
---
45
40
@@ -48,9 +43,9 @@ Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), q
48
43
**Objetivo**: Crear un Dockerfile para el backend y ejecutarlo en contenedor, conectado a MongoDB via red Docker.
49
44
50
45
#### 📋 Requisitos:
51
-
1. ✅ Crear un Dockerfile para el backend (tanto para .NET como para Node.js)
46
+
1. ✅ Crear un Dockerfile para el backend (para .NET para o Node.js)
52
47
2. ✅ Construir la imagen del backend
53
-
3. ✅ Ejecutar el backend en un contenedor en la red Docker
48
+
3. ✅ Ejecutar el backend en un contenedor en la red Docker que creaste en el Reto 1
54
49
4. ✅ Verificar que se conecta correctamente a MongoDB
55
50
5. ✅ Exponerse el puerto 5000 para que sea accesible
56
51
@@ -69,13 +64,13 @@ Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), q
69
64
1. ✅ Crear un Dockerfile para el frontend
70
65
2. ✅ Construir la imagen del frontend
71
66
3. ✅ Ejecutar el frontend en un contenedor en la red Docker
72
-
4. ✅ Configurar las variables de entorno para conectarse al backend en `http://topics-api:5000/api/topics`
73
-
5. ✅ Acceder a la interfaz desde el navegador en el puerto 8080
67
+
4. ✅ Configurar las variables de entorno para conectarse al backend en `http://topics-api:5000/api/classes`
68
+
5. ✅ Acceder a la interfaz desde el navegador en el puerto 3000
74
69
75
70
#### 💡 Tips:
76
-
- El frontend debe ser accesible desde http://localhost:8080
71
+
- El frontend debe ser accesible desde http://localhost:3000
77
72
- Configura las variables de entorno para apuntar al backend correcto
78
-
-Considera usar un servidor web lightweight (como nginx) para servir los archivos
73
+
-A través de los terminales de ambos componentes, e incluso desde la propia web podrás verificar que todo funciona correctamente
79
74
80
75
---
81
76
@@ -84,99 +79,47 @@ Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), q
84
79
**Objetivo**: Usar Docker Compose para orquestar todos los servicios (MongoDB, Backend, Frontend) como un director de orquesta.
85
80
86
81
#### 📋 Requisitos:
87
-
1. ✅ Crear un `docker-compose.yml` que incluya los tres servicios
82
+
1. ✅ Crear un `compose.yml` que incluya los tres servicios
88
83
2. ✅ Configurar la red compartida `lemoncode-network`
89
-
3. ✅ Definir volúmenes para persistencia de MongoDB
84
+
3. ✅ Definir volumen para persistencia de MongoDB
90
85
4. ✅ Establecer todas las variables de entorno necesarias
91
-
5. ✅ Exponer los puertos correctos (8080 para frontend, 5000 para API, 27017 para MongoDB)
86
+
5. ✅ Exponer los puertos correctos (3000 para frontend, 5000 para API, 27017 para MongoDB)
92
87
6. ✅ Definir dependencias entre servicios
93
88
7. ✅ Levantar toda la aplicación con un único comando
94
-
8. ✅ Acceder a la aplicación desde el navegador en http://localhost:8080
89
+
8. ✅ Acceder a la aplicación desde el navegador en http://localhost:3000
95
90
96
91
#### 💡 Tips:
97
92
- Usa `depends_on` para ordenar el inicio de los servicios
98
-
- Mapea volúmenes para persistencia de datos
93
+
- Mapea el volumen para persistencia de datos
99
94
- Define claramente las variables de entorno para cada servicio
100
95
- Documenta los comandos útiles (up, down, logs, etc.)
101
96
102
-
---
103
-
104
-
## 📚 Estructura de Archivos
105
-
106
-
```
107
-
lemoncode-challenge/
108
-
├── README.md (este archivo)
109
-
├── node-stack/
110
-
│ ├── backend/
111
-
│ │ └── ...
112
-
│ └── frontend/
113
-
│ └── ...
114
-
└── dotnet-stack/
115
-
├── backend/
116
-
│ └── ...
117
-
└── frontend/
118
-
└── ...
119
-
```
120
-
121
-
---
122
-
123
-
## 🎯 Resumen de Pasos Recomendados
124
-
125
-
1️⃣ **Primero**: Completa el **Reto 1** - MongoDB corriendo localmente
126
-
2️⃣ **Segundo**: Completa el **Reto 2** - Backend en Docker
127
-
3️⃣ **Tercero**: Completa el **Reto 3** - Frontend en Docker
128
-
4️⃣ **Cuarto**: Completa el **Reto 4** - Todo orquestado con Docker Compose
129
-
130
-
¡Demuestra que eres un maestro de la orquestación de contenedores! 🎭✨
131
-
132
-
¡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:
133
-
134
-
- 🌐 **Frontend**: Una interfaz con Node.js
135
-
- ⚙️ **Backend**: Elige tu aventura - .NET (`dotnet-stack`) o Node.js (`node-stack`) que se conecta con MongoDB
136
-
- 🗄️ **Base de datos**: MongoDB para almacenar toda la información
137
-
138
-
> 💡 **¡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!
139
-
140
-
### 📋 Misión: Cumple estos requisitos
141
-
142
-
1. 🌐 Los tres componentes deben vivir en armonía en una red llamada `lemoncode-challenge`
143
-
2. 🔗 El backend debe comunicarse con MongoDB usando esta URL mágica: `mongodb://some-mongo:27017`
144
-
3. 🚀 El frontend debe conectar con la API mediante: `http://topics-api:5000/api/topics`
145
-
4. 🌍 El frontend debe ser accesible desde tu navegador en el puerto `8080`
146
-
5. 💾 MongoDB debe persistir los datos en un volumen mapeado a `/data/db`
147
-
6. 📊 Crea una base de datos llamada `TopicstoreDb` con una colección `Topics` que tenga esta estructura:
148
-
149
-
```json
150
-
{
151
-
"_id": { "$oid" : "5fa2ca6abe7a379ec4234883" },
152
-
"topicName" : "Contenedores"
153
-
}
154
-
```
155
-
156
-
🎉 **¡No olvides añadir varios registros para hacer tu app más interesante!**
157
-
158
-
__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.
159
-
160
-

161
97
162
-
> 💎 **Pro Tip**: Abre Visual Studio Code directamente desde la carpeta `backend` para hacer las pruebas. ¡Te ahorrará tiempo! Para ejecutar el código:
163
-
> - .NET stack: `dotnet run`
164
-
> - Node.js stack: `npm install && npm start`
165
98
166
-
**🎨 Para el Frontend**:
167
-
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í:
99
+
### Entregables
168
100
169
-

101
+
#### 📦 Reto 1: MongoDB en Contenedor
102
+
1. ✅ Comandos utilizados para crear la red Docker
103
+
2. ✅ Comando para ejecutar el contenedor de MongoDB
104
+
3. ✅ Configuración de conexión del backend a MongoDB
3. ✅ Comando para ejecutar el contenedor del backend
111
+
4. ✅ Prueba REST Client validando que la API responde correctamente
172
112
173
-
¡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.
113
+
#### 🎨 Reto 3: Dockerizar el Frontend
114
+
1. ✅ Archivo `Dockerfile` del frontend
115
+
2. ✅ Comando para construir la imagen del frontend
116
+
3. ✅ Comando para ejecutar el contenedor del frontend
117
+
4. ✅ Archivo `.env` o variables de entorno configuradas correctamente
174
118
175
-
### 🎯 Tu misión incluye:
176
-
- 🌐 Configurar la red que conecta todos los servicios
177
-
- 💾 Definir el volumen que necesita MongoDB para persistir datos
178
-
- 🔧 Establecer las variables de entorno necesarias
179
-
- 🚪 Exponer los puertos correctos para web y API
180
-
- 📝 Documentar los comandos para levantar, parar y eliminar el entorno
181
119
182
-
¡Demuestra que eres un maestro de la orquestación de contenedores! 🎭✨
120
+
#### 🎪 Reto 4: Docker Compose
121
+
1. ✅ Archivo `compose.yml` completo y documentado con comentarios
122
+
2. ✅ Archivo `.env` (si es necesario) con variables de entorno
0 commit comments