diff --git a/.learnings/LEARNINGS.md b/.learnings/LEARNINGS.md index 58a4d73..4986b8a 100644 --- a/.learnings/LEARNINGS.md +++ b/.learnings/LEARNINGS.md @@ -355,3 +355,42 @@ Landing page 3D completa usando Atomic Design + Three.js + React Three Fiber + F - `npm run dev` → Vite HMR - Adicionar ao stack Swarm `dev` (volume bind mount + dnsrr) + +## [LRN-20260520-012] proxy-test-octal-deploy-zero-downtime + +**Logged**: 2026-05-20T20:15:00-03:00 +**Priority**: high +**Status**: reference +**Area**: devops | docker | caddy + +### Problema +test.octal.tec.br estava com HTML estático antigo (Octal Technology landing page). Precisou atualizar para o Pulse 3D. + +### Solução aplicada +1. Extrair HTML atual da imagem `test-octal:latest` via `docker cp` +2. Substituir pelo HTML novo (Pulse 3D — CSS completo) +3. Build: `docker build -t test-octal:latest .` no diretório com HTML + Dockerfile +4. Deploy: `docker service update --image test-octal:latest proxy_test-octal` +5. Resultado: zero-downtime, serviço convergiu com imagem nova + +### Padrão +```bash +# Extrair atual +mkdir /tmp/site-src && docker cp container:/usr/share/nginx/html . /tmp/site-src/ +# Atualizar index.html +cp novo.html /tmp/site-src/index.html +# Reconstruir +cd /tmp/site-src && cat > Dockerfile << 'D' +FROM nginx:alpine +COPY index.html /usr/share/nginx/html/index.html +EXPOSE 80 +CMD ["nginx","-g","daemon off;"] +D +docker build -t test-octal:latest . && docker push registry.octal.tec.br/pulse/test-octal:latest +# Atualizar service +docker service update --image test-octal:latest proxy_test-octal +``` + +### Resultado +- https://test.octal.tec.br agora mostra Pulse 3D Landing +- Registry push pode falhar com SSL (registry local com cert autoassinado) — usar imagem local diretamente no `docker service update` funciona