Dentro de um contêiner
O programa como PID 1, o prazo do docker stop, o host 0.0.0.0 e a sonda de saúde.
Dentro de um contêiner, o seu programa costuma ser o PID 1 — o primeiro processo. Isso muda três coisas que fora dele não importam.
| O quê | Fora | Dentro do contêiner |
|---|---|---|
| SIGTERM sem tratador | o processo morre | o PID 1 ignora — e o docker stop espera 10 s e mata com SIGKILL |
o endereço 127.0.0.1 | a máquina | o próprio contêiner: nada de fora chega |
| processos filhos que terminam | o sistema limpa | viram zumbis, se o PID 1 não os recolhe |
dataforge
adopt Arcane.Inicio as Inicio
// o tratador de SIGTERM é o que faz o 'docker stop' levar 50 ms, e não 10 s
Inicio.ao_encerrar(lambda => out "fila devolvida, banco fechado")
out "servindo"- `--host=0.0.0.0` no Kiln e na Vitrine. Com o padrão
127.0.0.1, o log diz "no ar" e ocurlde fora não recebe nada — o defeito mais enganoso de um contêiner. - `dataforge devops init` gera o Dockerfile com
USERsem privilégio,HEALTHCHECKe a ordem de camadas que não reinstala tudo a cada commit. - A sonda de saúde responde do próprio processo: uma rota
/saudeque confere o banco. Um contêiner vivo com o banco caído não deveria receber tráfego.
O guia completo, com compose, Kubernetes e o que cada artefato carrega: DevOps.