React + Rust + PostgreSQL
Um stack de alto desempenho: React no frontend, um backend escrito em Rust e PostgreSQL como banco de dados.
Rust compila para binários nativos sem coletor de lixo, com consumo de memória muito baixo e segurança de memória garantida pelo compilador. É a opção quando a carga de trabalho justifica o esforço extra de desenvolvimento.
Serviços incluídos
Além da sua aplicação, o Stack inicia o PostgreSQL, um nginx que recebe o tráfego na porta 80, um serviço de backups automáticos e o gerenciador de arquivos web.
Estrutura do projeto
.
├── 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
Início
Instale o Stack e inicie-o:
docker-deploy-stack --stack javascript/react-rust-postgres
cd /root/stack/javascript/react-rust-postgres
docker compose up -d
Depois substitua a aplicação de exemplo pela sua, via Git, por SFTP ou pelo gerenciador de arquivos web, seguindo como-implanto-uma-aplicacao-em-um-stack.md. Seu código vai na pasta app/.
Sempre que atualizar o código, aplique as alterações:
docker compose up -d --build
Configuração
Os valores editáveis estão no arquivo .env do Stack:
| Variável | Padrão | Para que serve |
|---|---|---|
APP_ENV |
development |
Ambiente da aplicação. |
DB_NAME |
postgres |
Nome do banco de dados. |
DB_USER |
postgres |
Usuário do banco de dados. |
BACKUP_ENABLED |
1 |
Backups automáticos: 1 ativados, 0 desativados. |
BACKUP_INTERVAL_SECONDS |
86400 |
Intervalo em segundos entre backups. |
BACKUP_RETENTION_DAYS |
7 |
Quantos dias os backups são mantidos. |
POSTGRES_VERSION |
12-alpine |
Versão da imagem correspondente. |
Depois de alterar, aplique as mudanças com docker compose up -d.
Comandos úteis
docker compose ps # ver os contêineres que estão rodando
docker compose logs -f # ver os logs ao vivo
docker compose restart # reiniciar os serviços
docker compose down # parar e remover os contêineres