2.7 KiB
2.7 KiB
type, layer, tags, title
| type | layer | tags | title | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Entity | wiki |
|
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) comnpm ci+ build TypeScript - Deploy:
docker service update --forceno 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
- Validar build local:
npx tsc -b && npx vite build && npx tsc -p api/tsconfig.json - Push Gitea:
git push origin main(HTTPS, ownerealmeida) - SSH easy:
docker build -t easypanel/descomplicar/dashboard_descomplicar:latest . - Redeploy:
docker service update --force descomplicar_dashboard_descomplicar - 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, userroot, 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 .envno.gitignore— nunca commitar credenciais