Skip to content

Commit ddad103

Browse files
committed
refactor: update README.md for clarity and remove outdated images
1 parent e244071 commit ddad103

File tree

4 files changed

+46
-103
lines changed

4 files changed

+46
-103
lines changed

01-contenedores/lemoncode-challenge/README.md

Lines changed: 46 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,34 @@
77
88
## 🎯 Los 4 Retos
99

10-
Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), que está compuesta de 3 partes increíbles:
10+
El objetivo es tener esta aplicación funcionando completamente en contenedores, la cual es un calendario de las clases de Lemoncode 🍋🗓️
11+
12+
![Lemoncode Calendar](./images/Aplicacion%20Lemoncode%20Challenge.png)
13+
14+
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:
1117

1218
- 🌐 **Frontend**: Una interfaz con Node.js
1319
- ⚙️ **Backend**: Elige tu aventura - .NET (`dotnet-stack`) o Node.js (`node-stack`) que se conecta con MongoDB
1420
- 🗄️ **Base de datos**: MongoDB para almacenar toda la información
1521

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.
1723
1824
---
1925

2026
### 🔥 Reto 1: MongoDB en Contenedor
2127

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.
2329

2430
#### 📋 Requisitos:
2531
1. ✅ Crear una red Docker para la comunicación
2632
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
3036

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! 🎉
4338

4439
---
4540

@@ -48,9 +43,9 @@ Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), q
4843
**Objetivo**: Crear un Dockerfile para el backend y ejecutarlo en contenedor, conectado a MongoDB via red Docker.
4944

5045
#### 📋 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)
5247
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
5449
4. ✅ Verificar que se conecta correctamente a MongoDB
5550
5. ✅ Exponerse el puerto 5000 para que sea accesible
5651

@@ -69,13 +64,13 @@ Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), q
6964
1. ✅ Crear un Dockerfile para el frontend
7065
2. ✅ Construir la imagen del frontend
7166
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
7469

7570
#### 💡 Tips:
76-
- El frontend debe ser accesible desde http://localhost:8080
71+
- El frontend debe ser accesible desde http://localhost:3000
7772
- 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
7974

8075
---
8176

@@ -84,99 +79,47 @@ Vas a dockerizar una aplicación completa dentro de [lemoncode-challenge](./), q
8479
**Objetivo**: Usar Docker Compose para orquestar todos los servicios (MongoDB, Backend, Frontend) como un director de orquesta.
8580

8681
#### 📋 Requisitos:
87-
1. ✅ Crear un `docker-compose.yml` que incluya los tres servicios
82+
1. ✅ Crear un `compose.yml` que incluya los tres servicios
8883
2. ✅ Configurar la red compartida `lemoncode-network`
89-
3. ✅ Definir volúmenes para persistencia de MongoDB
84+
3. ✅ Definir volumen para persistencia de MongoDB
9085
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)
9287
6. ✅ Definir dependencias entre servicios
9388
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
9590

9691
#### 💡 Tips:
9792
- 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
9994
- Define claramente las variables de entorno para cada servicio
10095
- Documenta los comandos útiles (up, down, logs, etc.)
10196

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-
![Mongo compass](./images/mongodbcompass.png)
16197

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`
16598

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
168100

169-
![Topics](./images/topics.png)
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
105+
4. ✅ Prueba REST Client mostrando peticiones exitosas (`backend/client.http`)
170106

171-
## 🎪 Misión 2: ¡Docker Compose al Rescate!
107+
#### 🐳 Reto 2: Dockerizar el Backend
108+
1. ✅ Archivo `Dockerfile` del backend
109+
2. ✅ Comando para construir la imagen
110+
3. ✅ Comando para ejecutar el contenedor del backend
111+
4. ✅ Prueba REST Client validando que la API responde correctamente
172112

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
174118

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
181119

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
123+
3. ✅ Comando `docker-compose up` ejecutándose exitosamente
124+
4. ✅ Captura de pantalla de todos los servicios corriendo (`docker-compose ps`)
125+
5. ✅ Captura de pantalla de la aplicación completa en `http://localhost:3000`
613 KB
Loading
-47.8 KB
Binary file not shown.
-9.37 KB
Binary file not shown.

0 commit comments

Comments
 (0)