You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.4 KiB
2.4 KiB
06 — Deployment & containerização (Docker)
Objetivo
Encapsular o microsite num contentor Docker para funcionamento independente e isolado: a aplicação corre da mesma forma em qualquer host com Docker, sem depender de um Node/npm instalado na máquina nem de configuração externa.
Motivação adicional: nesta máquina não existe Node/npm instalados — o Docker remove essa dependência do host (o build corre dentro da imagem). Ver CHANGELOG.md.
Estratégia
Multi-stage build:
- Stage
build(node:22-alpine):npm ci(ounpm install) +npm run build→ geradist/(estático Vite). - Stage
runtime(nginx:1.27-alpine): serve odist/como conteúdo estático. Imagem final pequena, sem Node nem código-fonte.
Como é uma SPA single-page, o runtime é um servidor estático; o nginx trata de
fallback de rotas para index.html e do cache de assets.
Artefactos a criar (após aprovação)
| Ficheiro | Função |
|---|---|
Dockerfile |
Build multi-stage (node → nginx) |
.dockerignore |
Excluir node_modules, dist, .git, etc. do contexto |
nginx.conf |
Config nginx: porta 80, SPA fallback, gzip, cache de assets |
docker-compose.yml |
Orquestração local (build + port mapping + healthcheck) |
Contrato de operação
- Build:
docker build -t resilience-microsite . - Run:
docker run --rm -p 8080:80 resilience-microsite→ http://localhost:8080 - Compose:
docker compose up --build(porta exposta8080:80por defeito). - Porta interna: 80 (nginx). Porta externa: configurável (default 8080).
- Sem estado: não há volumes nem dependências externas (site 100% estático).
- Healthcheck: GET
/devolve 200.
nginx — requisitos
try_files $uri $uri/ /index.html;(suporte a deep-link de âncoras/refresh).gzip onpara HTML/CSS/JS.- Cache longo para assets com hash (
/assets/*),no-cacheparaindex.html. - Servir em IPv4/IPv6, porta 80.
Notas
- O
Dockerfiletorna a verificação do gate de TypeScript reprodutível mesmo sem Node no host:npm run build(que corretsc -b) executa no stage de build; se houver erros de TS, odocker buildfalha — passando a ser o método de verificação de aceitação enquanto não houver Node instalado localmente. - Versões base pinadas (
node:22-alpine,nginx:1.27-alpine) para reprodutibilidade.