Centro de Ayuda

React + Express + MySQL

React para la interfaz, Express sobre Node.js para la API y MySQL como base de datos relacional.

Es la variante del stack MERN para cuando los datos tienen relaciones claras entre sí y conviene un esquema con integridad referencial y consultas SQL.

Servicios que incluye

Además de tu aplicación, el Stack levanta MySQL, 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
.
├── .docker
│   └── docker-compose.yaml
├── backend
│   ├── src
│   │   ├── config.js
│   │   ├── database.js
│   │   ├── index.js
│   │   └── server.js
│   ├── test
│   │   └── sample.js
│   ├── Dockerfile
│   ├── LICENSE
│   ├── healthcheck.js
│   ├── package-lock.json
│   └── package.json
├── backup
│   └── backup-runner.sh
├── frontend
│   ├── public
│   │   ├── favicon.ico
│   │   ├── index.html
│   │   ├── logo192.png
│   │   ├── logo512.png
│   │   ├── manifest.json
│   │   └── robots.txt
│   ├── src
│   │   ├── App.css
│   │   ├── App.js
│   │   ├── App.test.js
│   │   ├── index.css
│   │   ├── index.js
│   │   ├── logo.svg
│   │   ├── serviceWorker.js
│   │   ├── setupProxy.js
│   │   └── setupTests.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-mysql
cd /root/stack/javascript/react-express-mysql
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.
DB_NAME example Nombre de la base de datos.
DB_USER root Usuario de la base de datos.
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.
MARIADB_VERSION 10.6.4-focal 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