Files
DashDescomplicar/okf/entidades/Docker-Deploy.md
T

2.7 KiB

type, layer, tags, title
type layer tags title
Entity wiki
stack
dashdescomplicar
infra
docker
easypanel
deploy
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