docs(okf): entidades e relacionamentos OKF do DashDescomplicar
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
---
|
||||
type: Entity
|
||||
layer: wiki
|
||||
tags: [stack, dashdescomplicar, infra, docker, easypanel, deploy]
|
||||
title: "Docker-Deploy"
|
||||
---
|
||||
|
||||
# Docker-Deploy
|
||||
|
||||
Pipeline de containerização e deploy do DashDescomplicar via Docker + EasyPanel Swarm no servidor `easy` (VM 101, Proxmox).
|
||||
|
||||
## Responsabilidades
|
||||
|
||||
- **Build**: Imagem Docker multi-stage (`node:22-alpine`) com `npm ci` + build TypeScript
|
||||
- **Deploy**: `docker service update --force` no EasyPanel Swarm
|
||||
- **Runtime**: Node.js 22 Alpine, porta 3001, `NODE_ENV=production`
|
||||
- **Static Serving**: Express serve o bundle Vite (`dist/`) em produção
|
||||
- **Health**: `curl -sf https://dash.descomplicar.pt/api/health`
|
||||
|
||||
## Stack
|
||||
|
||||
- **Dockerfile**: 26 linhas, `node:22-alpine`
|
||||
- **Build**: `tsc -b && vite build && tsc -p api/tsconfig.json`
|
||||
- **Start**: `node api/dist/server.js` (compilado TS → JS)
|
||||
- **Procfile**: `web: node api/dist/server.js` (EasyPanel)
|
||||
- **Repo**: Gitea (`git.descomplicar.pt/ealmeida/DashDescomplicar`)
|
||||
|
||||
## Pipeline de Deploy
|
||||
|
||||
1. **Validar build local**: `npx tsc -b && npx vite build && npx tsc -p api/tsconfig.json`
|
||||
2. **Push Gitea**: `git push origin main` (HTTPS, owner `ealmeida`)
|
||||
3. **SSH easy**: `docker build -t easypanel/descomplicar/dashboard_descomplicar:latest .`
|
||||
4. **Redeploy**: `docker service update --force descomplicar_dashboard_descomplicar`
|
||||
5. **Verificar**: `curl -sf https://dash.descomplicar.pt/api/dashboard`
|
||||
|
||||
## Variáveis de Ambiente (Container)
|
||||
|
||||
```
|
||||
DB_HOST=176.9.3.158
|
||||
DB_USER=...
|
||||
DB_PASS=...
|
||||
DB_NAME=...
|
||||
WP_MONITOR_API_KEY=...
|
||||
HETZNER_TOKEN=...
|
||||
N8N_API_KEY=...
|
||||
BESZEL_URL=...
|
||||
BESZEL_EMAIL=...
|
||||
BESZEL_PASSWORD=...
|
||||
EASY_HOST=5.9.90.70
|
||||
EASY_USER=root
|
||||
EASY_PASS=...
|
||||
MCP_GATEWAY_URL=https://gateway.descomplicar.pt
|
||||
OBSERVABILIDADE_DB=/data/sessions.db
|
||||
NODE_ENV=production
|
||||
API_PORT=3001
|
||||
FRONTEND_URL=https://dash.descomplicar.pt
|
||||
```
|
||||
|
||||
## Volumes
|
||||
|
||||
- `/root/data/dashboard-descomplicar/sessions.db:/data/sessions.db` (SQLite sessions)
|
||||
|
||||
## Localizações
|
||||
|
||||
- **Dockerfile**: `Dev/DashDescomplicar/Dockerfile`
|
||||
- **Procfile**: `Dev/DashDescomplicar/Procfile`
|
||||
- **Código no servidor**: `/etc/easypanel/projects/descomplicar/dashboard_descomplicar/code/`
|
||||
- **Deploy**: `dash.descomplicar.pt` (EasyPanel Swarm, Traefik reverse proxy)
|
||||
|
||||
## Dependências
|
||||
|
||||
- **Gitea**: Push de código (`git.descomplicar.pt/ealmeida/DashDescomplicar`)
|
||||
- **EasyPanel Server**: SSH (`5.9.90.70:22`, user `root`, password auth)
|
||||
- **Express-API**: Servidor Node.js dentro do container
|
||||
- **MySQL-Pool**: Conexão ao CWP (`176.9.3.158:3306`)
|
||||
|
||||
## Notas Operacionais
|
||||
|
||||
- EasyPanel MCP (`redeploy_service`) está quebrado — usar SEMPRE SSH directo
|
||||
- Pre-commit hook (`Regra #47`): `npm audit --audit-level=moderate`
|
||||
- `.env` no `.gitignore` — nunca commitar credenciais
|
||||
Reference in New Issue
Block a user