a89eed3ba6
- VERDADE-HOJE.md: deploy/rollback/containers/versão refletem CI/CD por tag + registry - DEPLOY-PRODUCAO.md: fluxo canônico = deploy por tag; manual vira fallback Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Qual é a verdade hoje? — Auditoria de infra ScoreOdonto
Resposta direta às 6 perguntas essenciais, verificada em 16/jun/2026. Sem teoria, sem fantasma. Detalhes em
arquitetura.md(real),deploy.md(alvo) eDEPLOY-PRODUCAO.md(runbook).
1. Onde está o código?
- Fonte da verdade: Gitea na VPS3, repo
ruicesar/scoreodonto.com(ssh://git@10.99.0.3/ruicesar/scoreodonto.com.git). - Cópia de trabalho (dev): VPS4 em
/home/deploy/stack/scoreodonto.com(onde se programa). - Cópia de produção: VPS1 em
/home/deploy/stack/scoreodonto.com(HEAD verificado:19dbbae). - Documentação: centralizada em
scoreodonto.com/documentação/(este diretório).
2. Onde está o banco?
- PostgreSQL no host da VPS3 (
10.99.0.3:5432), bancoscoreodonto, usuárioscoreodonto_user. - ⚠️ DEV e PROD usam o MESMO banco. Não há isolamento. Backup (
pg_dump -Fc) é a única rede de segurança. - Cache DragonflyDB (
10.99.0.3:6379, índice/1). Mensageria NATS (:4222) e Temporal (:7233).
3. Onde estão os containers?
- Produção (VPS1, docker rootless
unix:///run/user/1000/docker.sock):scoreodontocom-scoreodonto-frontend-1— roda imagem versionada do registry (git.clube67.com/ruicesar/scoreodonto-frontend:<tag>), promovida por deploy-por-tag. Produção não builda mais.scoreodontocom-scoreodonto-backend-1— idem (:8018).traefik-traefik-1— borda TLS (Up ~13 dias). Também: rx, newwhats, subdominio, mercado.
- Dev (VPS4, docker root
/var/run/docker.sock):scoreodontocom-nginx-1(0.0.0.0:8020->80, alvo do Traefik paradev.),scoreodonto-frontend-1(:3013),scoreodonto-backend-1(:8018).
- Roteamento: Traefik na VPS1 →
scoreodonto.com(containers locais) edev.scoreodonto.com→http://10.99.0.4:8020.
4. Quem faz deploy?
- CI/CD por tag (Gitea Actions).
git tag vX.Y.Z && git push origin vX.Y.Z→ o runnervps4-builderbuilda as imagens, publica no registry e o jobdeploypromove para a VPS1 (deploy-prod.sh). Push na main NÃO deploya — só builda. - Produção não builda mais: consome a imagem versionada do registry (
docker compose -f docker-compose.yml -f docker-compose.prod.yml pull && up -d --no-build). - Deploy manual também disponível: na VPS1,
./deploy-prod.sh <tag>. Verdeploy.mdeREGISTRY.md.
5. Como versiona?
APP_VERSIONemfrontend/constants.ts(dev hojeV1.0.13), incrementado porupdate-version.js(patch++).- ⚠️ Bump é manual — nada chama
update-version.jsno build (npm run build= sóvite build). Por isso a versão fica parada se ninguém rodar o script. - ✅ Versão visível (Etapa 3): rodapé do Sidebar +
GET /api/version+ log de boot[VERSION] …. Carimbo (versão/commit/data/ambiente) injetado no build. No ar em DEV e em PRODUÇÃO (prod hoje:v1.0.14 · 081985c · PROD).
6. Como volta uma versão (rollback)?
- Por imagem, sem rebuild: na VPS1,
./deploy-prod.sh <tag-anterior>(ex.:./deploy-prod.sh v1.0.13) — puxa a imagem da tag anterior do registry e sobe. Minutos, sem recompilar. - Seguro porque as migrações são aditivas (voltar código não quebra o schema). Restaurar o dump (
/home/deploy/backups/) só em caso extremo.
Veredito de uma linha
O código está salvo no Gitea (VPS3) e roda em containers na VPS1 (prod) e VPS4 (dev), ambos no mesmo banco da VPS3. CI/CD por tag ativo:
git tag vX.Y.Z→ CI builda imagem → deploy automático na VPS1, com versão visível no rodapé//api/versione rollback por imagem (deploy-prod.sh <tag-anterior>). Pendência estrutural restante: isolar um bancoscoreodonto_dev(dev e prod ainda compartilham o banco).