|
| 1 | +# Laboratorio Contenedores Docker |
| 2 | + |
| 3 | +## Ejercicio 1 |
| 4 | + |
| 5 | +Dockeriza la aplicación dentro de [lemoncode-challenge](./), la cual está compuesta de 3 partes: |
| 6 | + |
| 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. |
| 10 | + |
| 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. |
| 12 | + |
| 13 | +### Requisitos del ejercicio |
| 14 | + |
| 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: |
| 21 | + |
| 22 | +```json |
| 23 | +{ |
| 24 | + "_id": { "$oid" : "5fa2ca6abe7a379ec4234883" }, |
| 25 | + "topicName" : "Contenedores" |
| 26 | +} |
| 27 | +``` |
| 28 | + |
| 29 | +¡Añade varios registros! |
| 30 | + |
| 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. |
| 32 | + |
| 33 | + |
| 34 | + |
| 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. |
| 36 | + |
| 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: |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +## Ejercicio 2 |
| 42 | + |
| 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. |
0 commit comments