Skip to content

🚀 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

  1. Clona el siguiente repositorio de ejemplo: https://gitlab.com/dbenavidesitm/docker-compose.
  2. Revisa la estructura del proyecto, que incluye un backend en Node.js, un frontend y una base de datos MongoDB.
  3. Crea los Dockerfile necesarios para el backend y el frontend, asegurando que se instalen todas las dependencias y se expongan los puertos adecuados.
  4. 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.
  5. Levanta todos los servicios con el comando docker compose up -d y valida que la aplicación web funciona correctamente y puede interactuar con la base de datos MongoDB.
  6. 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 up en la carpeta del proyecto.
  • Accede al frontend en http://localhost:3000 y realiza operaciones.
  • Verifica que los datos se almacenan correctamente en la base de datos