Pular para conteúdo

Build compartilhado — do código ao ambiente

Build é a construção da imagem Docker a partir do código. Registry é o serviço que guarda a imagem. Deploy é sua instalação no ambiente escolhido.

O Coolify coordena, a máquina de build constrói e o servidor do ambiente executa.

Base desta documentação — 05/10/2026

Página preparada a partir dos registros de implantação de agosto e setembro de 2026. A configuração atual dos servidores não foi reconferida nesta revisão. Conferir permissões e limitações de versão antes de alterar o ambiente.

Quem faz o quê

flowchart LR
    A["Coolify<br/>Adapter / BravoCore"]
    S["Coolify<br/>SmartITBI"]
    L["Coolify<br/>LBCA"]
    B["Coolify<br/>Bravobot"]
    BUILD["Máquina de build<br/>Constrói as imagens"]
    REG[("IBM Container Registry<br/>br.icr.io")]
    AMB["Servidores dos ambientes<br/>Executam as aplicações"]
    A --> BUILD
    S --> BUILD
    L --> BUILD
    B --> BUILD
    BUILD -->|"Envia as imagens"| REG
    REG -->|"Ambientes baixam as imagens"| AMB
Peça Responsabilidade
GitHub Guarda o código e avisa sobre alterações na branch configurada
Coolify do produto Coordena a construção e a publicação da aplicação
Máquina de build compartilhada Constrói pelo Dockerfile e envia a imagem ao registry
IBM Container Registry (br.icr.io) Guarda as imagens privadas
Servidor do ambiente Baixa a imagem e executa com suas variáveis, redes e volumes

A máquina de build atende Adapter/BravoCore, SmartITBI, LBCA e Bravobot. Cada produto mantém seu próprio Coolify.

Construir fora do ambiente reduz a disputa por CPU, memória e disco com as aplicações. Isso não elimina o impacto da troca de containers ou de alterações no banco.

A mesma máquina também hospeda a wiki e o Langfuse fora do gerenciamento de aplicações do Coolify. Manutenção e falta de disco podem afetar esses serviços e novas publicações.

Do código à aplicação

flowchart TD
    G["Alteração na branch do GitHub"]
    C["Coolify recebe o aviso"]
    B["Máquina de build constrói<br/>a imagem pelo Dockerfile"]
    R["Imagem enviada ao registry"]
    D["Servidor do ambiente<br/>baixa a imagem"]
    E["Aplicação inicia com suas<br/>variáveis, redes e volumes"]
    V["Conferir versão publicada<br/>e testar o fluxo alterado"]
    G -->|"Webhook"| C
    C --> B
    B --> R
    R --> D
    D --> E
    E --> V
  1. Uma alteração chega à branch configurada para o ambiente.
  2. O GitHub envia um webhook, aviso automático, ao Coolify do produto.
  3. O Coolify usa o servidor de build para construir a imagem pelo Dockerfile.
  4. A imagem é enviada ao namespace do produto no registry. Namespace é a divisão que agrupa suas imagens.
  5. O servidor do ambiente baixa a imagem e inicia os containers.
  6. A equipe confere a versão em execução e o funcionamento da aplicação.

Deploy automático depende do webhook correspondente no GitHub. A opção ligada no painel, sozinha, não comprova que uma alteração dispara a publicação.

Configuração no Coolify

Configuração O que conferir
Código Repositório, branch, diretório base e caminho do Dockerfile
Destino Servidor e ambiente onde a aplicação executará
Build externo Servidor cadastrado como build server e selecionado para a aplicação
Imagem Campo docker_registry_image_name com o caminho completo no registry
Variáveis Separação entre valores de build e valores de execução
Inicialização Comando, porta, verificação de saúde, redes e volumes
Automação Webhook correspondente ao recurso e à branch

As branches variam: no Adapter, frontend e API Koa usam dev; o BravoCore usa develop. Consulte a página do produto antes de copiar a configuração.

Dockerfile e Docker Compose

Na implantação do Bravobot de 01/09/2026, o build externo funcionou com aplicações por Dockerfile. O caminho de Docker Compose daquela versão falhou com No such container. Isso explica a separação em aplicações; não comprova que versões atuais tenham a mesma limitação.

Registry e acesso

Os registros de implantação usam o IBM Container Registry em br.icr.io, com namespaces por produto e imagens por aplicação e ambiente. A tag identifica o commit.

Exemplo: br.icr.io/bravobot/<aplicacao>-<ambiente>:<commit>.

Leia o nome exato no recurso do Coolify. Um mesmo commit pode gerar imagens diferentes entre ambientes, pois as variáveis de build podem mudar.

  • Push, envio: a máquina de build precisa escrever nos namespaces atendidos.
  • Pull, download: o servidor do ambiente precisa ler as imagens do produto.

A credencial de envio é compartilhada

No desenho registrado, uma identidade atende os quatro produtos. Substituí-la por uma credencial limitada a um produto no mesmo contexto Docker pode interromper os demais. Ao adicionar um produto, revisar as permissões da identidade existente antes de executar um novo login.

A autenticação Docker depende do usuário e do contexto de execução. Um login no terminal não prova que o processo usado pelo Coolify tenha acesso. Confira envio e download separadamente, sem imprimir tokens ou arquivos de autenticação.

Solicite credenciais à equipe responsável. Nunca coloque segredos nas variáveis incorporadas ao JavaScript do frontend: esse conteúdo chega ao navegador.

Como conferir o resultado

No histórico de deploys, conferir branch, commit e as etapas de construção, envio, download e inicialização. Depois, conferir a imagem em execução e testar o fluxo alterado.

Imagem no registry prova envio, não execução no ambiente. HTTP 200 também não comprova, sozinho, acesso ao banco, funcionamento dos workers ou conclusão de tarefas.

Onde o deploy pode falhar

flowchart TD
    F{"Em qual etapa falhou?"}
    F --> B["Construção"]
    F --> P["Envio ao registry"]
    F --> D["Download da imagem"]
    F --> I["Inicialização"]
    B --> BC["Conferir Dockerfile,<br/>dependências, variáveis de build<br/>e espaço em disco"]
    P --> PC["Conferir nome da imagem,<br/>permissão de escrita<br/>e conexão com o registry"]
    D --> DC["Conferir tag disponível,<br/>permissão de leitura<br/>e acesso do servidor"]
    I --> IC["Conferir logs, variáveis,<br/>comando, porta,<br/>banco e volumes"]
    BC --> V["Antes de tentar novamente:<br/>conferir se a versão anterior<br/>continua saudável"]
    PC --> V
    DC --> V
    IC --> V
Sintoma Onde investigar
Alteração não inicia deploy Entrega do webhook, branch e opção de deploy automático
Falha ao baixar código Acesso ao repositório, branch e diretório base
Erro na construção Log do Dockerfile, dependências, variáveis de build e disco
Failed to push image to docker registry Nome da imagem, permissão de escrita, conectividade e resposta do registry
pull access denied Nome da imagem, tag existente e permissão de leitura no destino
Imagem baixada, aplicação não inicia Variáveis de execução, comando, banco, volumes e logs do container
Frontend usa a API anterior Variável de build: mudar apenas a configuração de execução não refaz o JavaScript

Antes de repetir, identificar a etapa que falhou e conferir se a versão anterior continua saudável. Não apagar imagens ou volumes como tentativa de corrigir um erro ainda sem diagnóstico.

Manutenção e retorno à versão anterior

Mudanças em Docker, SSH, credencial do registry e limpeza de disco devem considerar os quatro produtos e os serviços hospedados na máquina de build.

Antes de limpar, conferir builds em andamento e distinguir cache, imagens necessárias para retorno e volumes persistentes. Não remover volumes como rotina de limpeza de build.

Para retornar uma aplicação, identificar a imagem anterior e confirmar sua disponibilidade no registry. Conferir a compatibilidade com o banco atual: trocar a imagem não desfaz migrações nem recupera dados. O procedimento deve ser definido para cada produto antes de uma publicação que altera seu banco.

A wiki tem publicação própria

Esta wiki usa MkDocs e o script publicar.sh. Um merge não atualiza o site sozinho. Veja como publicar a wiki.