Pular para o conteúdo

7. Implantação

flowchart LR
    dev(["Desenvolvedora<br/>git push"]) --> bb["Bitbucket<br/>moldape/moldape-v2"]
    bb -- "Pipelines: lint · test" --> ci{{"CI"}}
    bb -- "Coolify puxa o branch<br/>e faz o build" --> coolify

    subgraph vps ["VPS Contabo"]
      coolify["Coolify<br/><small>build com Nixpacks</small>"]
      subgraph svcs ["Serviços"]
        web["web<br/>:3000"]
        api["order-lifecycle<br/>:4001"]
        docs["docs<br/>:4321"]
        pg[("PostgreSQL")]
        rd[("Redis")]
        vol[["volume uploads"]]
      end
      coolify --> web & api & docs
      api --- vol
      web & api --- pg
      api --- rd
    end

    cf["Cloudflare<br/>DNS + TLS"] --> web & api & docs
    user(["Usuários"]) --> cf
Elemento Detalhe
Servidor VPS na Contabo.
Orquestração Coolify (PaaS self-hosted): build, variáveis de ambiente, health check, domínios e TLS interno.
Build Nixpacks, configurado por nixpacks.toml em cada app.
Borda Cloudflare para DNS e TLS; domínios moldape.com (web) e api.moldape.com (API).
Fora do escopo AWS, Azure e Kubernetes não são usados. O workflow .github/workflows/azure-k8s.yml é legado e será removido.
App Setup Instalação Build Start
web nodejs_22, git, pnpm pnpm install --filter=web... pnpm run prisma:generate && pnpm run build pnpm run start (porta 3000)
order-lifecycle graphicsmagick (apt) pnpm install no workspace prisma generate + pnpm run build pnpm run start:prod (porta 4001)
docs nodejs_24, pnpm_10 pnpm install --filter=@moldape/docs... astro build node apps/docs/scripts/serve.mjs (porta 4321, health em /healthz)

O .coolify.json define, para o order-lifecycle, curl -f http://localhost:4001/api/health a cada 30 s (timeout 3 s, 3 tentativas), com limite de 1 GB de memória e 0,5 CPU.

O bitbucket-pipelines.yml roda, em todo push e na main: Lint → Tests → Health Check → Build Docker Image, com imagem node:18.

Desenvolvido e documentado por
Nós Tecnologia · Desenvolvimento Criativo