Centro de Ayuda

React + Express + MongoDB

El clásico stack MERN: React para la interfaz, Express sobre Node.js para la API y MongoDB como base de datos de documentos.

Es la combinación indicada cuando el modelo de datos es flexible o cambia seguido, porque MongoDB no impone un esquema fijo y guarda documentos parecidos a los objetos que ya manejás en JavaScript.

Servicios que incluye

Además de tu aplicación, el Stack levanta MongoDB, un nginx que recibe el tráfico del puerto 80, un servicio de backups automáticos y el administrador de archivos web.

Estructura del proyecto

text
.
├── backend
│   ├── config
│   │   ├── config.js
│   │   ├── config.json
│   │   └── messages.js
│   ├── db
│   │   └── index.js
│   ├── logs
│   │   └── .gitkeep
│   ├── models
│   │   └── ...
│   ├── routes
│   │   └── index.js
│   ├── utils
│   │   └── ...
│   ├── Dockerfile
│   ├── package-lock.json
│   ├── package.json
│   └── server.js
├── backup
│   └── backup-runner.sh
├── frontend
│   ├── public
│   │   ├── favicon.ico
│   │   ├── index.html
│   │   ├── logo192.png
│   │   ├── logo512.png
│   │   ├── manifest.json
│   │   └── robots.txt
│   ├── src
│   │   ├── ...
│   │   ├── App.js
│   │   ├── App.scss
│   │   ├── App.test.js
│   │   ├── custom.scss
│   │   ├── index.css
│   │   ├── index.js
│   │   ├── logo.svg
│   │   └── serviceWorker.js
│   ├── Dockerfile
│   ├── package-lock.json
│   └── package.json
├── nginx
│   └── default.conf
├── .env.example
└── compose.yaml

Puesta en marcha

Instalá el Stack y levantalo:

bash
docker-deploy-stack --stack javascript/react-express-mongodb
cd /root/stack/javascript/react-express-mongodb
docker compose up -d

Después reemplazá la aplicación de ejemplo por la tuya, desde Git, por SFTP o desde el administrador de archivos web, siguiendo como-despliego-una-aplicacion-en-un-stack.md. Tu código va en la carpeta app/.

Cada vez que actualices el código, aplicá los cambios:

bash
docker compose up -d --build

Configuración

Los valores editables están en el archivo .env del Stack:

Variable Por defecto Para qué sirve
APP_ENV development Entorno de la aplicación.
BACKUP_ENABLED 1 Backups automáticos: 1 activados, 0 desactivados.
BACKUP_INTERVAL_SECONDS 86400 Cada cuántos segundos se hace un backup.
BACKUP_RETENTION_DAYS 7 Cuántos días se conservan los backups.
MONGO_VERSION 4.2.0 Versión de la imagen correspondiente.

Después de cambiarlo, aplicá los cambios con docker compose up -d.

Comandos útiles

bash
docker compose ps          # ver los contenedores que están corriendo
docker compose logs -f     # ver los logs en vivo
docker compose restart     # reiniciar los servicios
docker compose down        # detener y eliminar los contenedores