Pular para o conteúdo

Implantação

O projeto gerado inclui um Dockerfile e docker-compose.yml. Esta é a maneira mais simples de implantar:

services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: rebase
POSTGRES_PASSWORD: rebase
POSTGRES_DB: rebase
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
app:
build: ./backend
ports:
- "3001:3001"
environment:
DATABASE_URL: postgresql://rebase:rebase@postgres:5432/rebase
JWT_SECRET: ${JWT_SECRET}
NODE_ENV: production
depends_on:
- postgres
volumes:
- uploads:/app/uploads
volumes:
pgdata:
uploads:
docker compose up -d

Antes de implantar em produção, certifique-se:

ItemDetalhes
JWT_SECRETUse uma string aleatória criptograficamente forte (≥ 32 caracteres). Nunca reutilize entre ambientes.
DATABASE_URLUse uma instância Postgres gerenciada (Neon, Supabase, RDS) com TLS ativado
CORSConfigure as origens permitidas no seu backend se o frontend e o backend estiverem em domínios diferentes
Volumes de armazenamentoMonte volumes persistentes para uploads de arquivos. Ou mude para S3 para produção.
HTTPSTermine o TLS no seu proxy reverso (nginx, Cloudflare, balanceador de carga)
RegistroDefina ALLOW_REGISTRATION=false após criar sua conta de administrador

Em produção, o backend pode servir o frontend como uma SPA estática:

import { serveSPA } from "@rebasepro/server-core";
// After initializeRebaseBackend()
import path from "path";
// After initializeRebaseBackend()
serveSPA(app, { frontendPath: path.resolve(process.cwd(), "../frontend/dist") });

Primeiro, construa o frontend:

cd frontend && pnpm build

Dessa forma, você só precisa implantar um servidor que lida com SPA e API.

  1. Envie seu código para um repositório Git
  2. Conecte o repositório à sua plataforma de nuvem
  3. Defina as variáveis de ambiente (DATABASE_URL, JWT_SECRET, etc.)
  4. O Dockerfile incluído será detectado automaticamente
# Build the container
docker build -t gcr.io/YOUR_PROJECT/rebase-backend ./backend
# Push to Container Registry
docker push gcr.io/YOUR_PROJECT/rebase-backend
# Deploy
gcloud run deploy rebase-backend \
--image gcr.io/YOUR_PROJECT/rebase-backend \
--set-env-vars DATABASE_URL=...,JWT_SECRET=... \
--allow-unauthenticated

Se você quiser que o Rebase seja executado em um subcaminho (por exemplo, /admin):

Frontend — Atualize o basename do BrowserRouter:

<BrowserRouter basename="/admin">
<App />
</BrowserRouter>

Backend — Atualize o caminho base:

await initializeRebaseBackend({
// ...
basePath: "/admin/api"
});