React + Rust + PostgreSQL
Un stack de alto rendimiento: React en el frontend, un backend escrito en Rust y PostgreSQL como base de datos.
Rust compila a binarios nativos sin recolector de basura, con un consumo de memoria muy bajo y una seguridad de memoria garantizada por el compilador. Es la opción cuando la carga de trabajo justifica el esfuerzo extra de desarrollo.
Servicios que incluye
Además de tu aplicación, el Stack levanta PostgreSQL, 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
.
├── backend
│ ├── migrations
│ │ ├── .gitkeep
│ │ ├── 0001_create-users_down.sql
│ │ └── 0001_create-users_up.sql
│ ├── src
│ │ ├── main.rs
│ │ ├── postgres.rs
│ │ └── user.rs
│ ├── Cargo.toml
│ └── Dockerfile
├── 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
├── capture.png
└── compose.yaml
Puesta en marcha
Instalá el Stack y levantalo:
docker-deploy-stack --stack javascript/react-rust-postgres
cd /root/stack/javascript/react-rust-postgres
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 |
postgres |
Nombre de la base de datos. |
DB_USER |
postgres |
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. |
POSTGRES_VERSION |
12-alpine |
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