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
.
├── .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:
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:
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
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