Este proyecto proporciona una aplicación Node.js que interactúa con una base de datos MongoDB. Utiliza Docker y Docker Compose para gestionar los servicios de manera sencilla.
El IDE utilizado para este proyecto fue: VSCode.
- MongoDB: Base de datos con datos iniciales.
- Node.js: Aplicación web en Express.
- Endpoints REST:
GET /users
: Obtiene todos los usuarios.GET /users/search
: Busca usuarios según criterios específicos.PUT /users/:id
: Actualiza un usuario si existe o crea uno nuevo con un ID específico.DELETE /users/:id
: Elimina un usuario por su ID.
project-root/
│
├── mongodb/
│ └── init-db.js
│
├── node-app/
│ ├── Dockerfile
│ ├── package.json
│ ├── package-lock.json
│ └── index.js
│
├── .gitignore
└── docker-compose.yml
- mongodb/init-db.js: Script para inicializar MongoDB con datos iniciales.
- node-app/Dockerfile: Dockerfile para construir la aplicación Node.js.
- node-app/package.json: Archivo de dependencias para la aplicación Node.js.
- node-app/index.js: Código de la aplicación Node.js. docker-compose.yml: Archivo de configuración para Docker Compose.
- .gitignore: Archivos y carpetas ignorados en Git.
- Docker
- Docker Compose
- Node
- Git
- NPM
- Curl o Postman para probar la API.
Para comprobar que se tenga docker installado correr:
docker --version
Para comprobar que docker-compose esté instalado:
docker-compose --version
Para comprobar Git:
git --version
Y para comprobar Node y NPM:
node --version
npm --version
En Windows:
Add-WindowsCapability -Online -Name "Tools.Curl~~~~0.0.1.0"
En macOS:
brew install curl
Linux - Ubuntu/Debian:
sudo apt-get update
sudo apt-get install curl
Linux - CenOS/RHEL:
sudo yum update
sudo yum install curl
Linux - Fedora:
sudo dnf install curl
Linux - Arch:
sudo pacman -Syu curl
- Clonar el repositorio
git clone https://github.com/SebasAB/mongo-nodejs-docker.git
cd mongo-nodejs-docker
- Iniciar los servicios utilizando docker compose
docker-compose up -d --build
- Utilizando alguna herramienta como: Postman o Thunderclient probar los endpoints.
- Obtener todos los usuarios
curl "http://localhost:3000/users"
- Buscar usuarios por criterios específicos:
curl "http://localhost:3000/users/search?first_name=Brandise&last_name=Ingerman"
- Actualizar usuario utilizando el ID (en caso de no encontrar el usuario se creará uno nuevo):
curl -X PUT "http://localhost:3000/users/605c5f0c2b8c2f1bf4eae75e" -H "Content-Type: application/json" -d '{
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com"
}'
- Eliminar usuario:
curl -X DELETE "http://localhost:3000/users/605c5f0c2b8c2f1bf4eae75e"\