🚀 Challenge: Despliegue de una Aplicación Node.js + MongoDB usando Dockerfile y Docker Compose
Objetivo
🎯 El reto consiste en implementar y desplegar una aplicación web basada en Node.js con frontend y backend separados, conectada a una base de datos MongoDB, utilizando Docker y Docker Compose. Deberás crear los Dockerfile para el frontend y el backend, y definir los servicios en un archivo docker-compose.yml para facilitar el despliegue y la comunicación entre los contenedores.
📢 Enunciado
- Clona el siguiente repositorio de ejemplo: https://gitlab.com/dbenavidesitm/docker-compose.
- Revisa la estructura del proyecto, que incluye un backend en Node.js, un frontend y una base de datos MongoDB.
- Crea los Dockerfile necesarios para el backend y el frontend, asegurando que se instalen todas las dependencias y se expongan los puertos adecuados.
- Define los servicios para el backend, frontend y MongoDB en el archivo
docker-compose.yml, configurando las variables de entorno necesarias para la conexión entre los servicios. - Levanta todos los servicios con el comando
docker compose up -dy valida que la aplicación web funciona correctamente y puede interactuar con la base de datos MongoDB. - Provee instrucciones para probar la aplicación y verificar la persistencia de datos en MongoDB.
Criterios de Éxito:
- El backend y el frontend deben iniciar correctamente y ser accesibles desde el navegador.
- MongoDB debe estar corriendo en un contenedor separado y ser accesible desde el backend.
- Las operaciones CRUD deben funcionar correctamente y los datos deben persistir en la base de datos.
- Los servicios deben estar definidos y conectados en el archivo
docker-compose.yml. - No se deben exponer más puertos de los necesarios.
🛠️ Recursos:
- Repositorio de ejemplo: https://gitlab.com/dbenavidesitm/docker-compose
- Ejemplo de Dockerfile para backend Node.js:
FROM node:10-alpine WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3001 CMD ["node", "server.js"] -
Ejemplo de Dockerfile para frontend:
FROM node:14-alpine WORKDIR /app ENV PATH /app/node_modules/.bin:$PATH COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"] -
Documentación oficial de Docker Compose: https://docs.docker.com/compose/
Instrucciones de Prueba:
- Ejecuta
docker compose upen la carpeta del proyecto. - Accede al frontend en
http://localhost:3000y realiza operaciones. - Verifica que los datos se almacenan correctamente en la base de datos