Pular para o conteúdo principal

Imagem Docker

A imagem ghcr.io/piluvitu/botai traz o servidor HTTP e a CLI inteira. Você não precisa de Node na máquina. Fixe a versão exata: ghcr.io/piluvitu/botai:0.4.1.

docker pull ghcr.io/piluvitu/botai:0.4.1

A imagem é publicada para linux/amd64 e linux/arm64.

Documentado

A auditoria de 2026-10-08 rodou só a arm64. A amd64 passa pela fumaça do CI do projeto antes de ser publicada (segundo o CLAUDE.md do core), mas ninguém a rodou na auditoria.

O servidor​

Sem argumentos, a imagem sobe o botai serve na porta 8790:

docker run --rm -p 8790:8790 ghcr.io/piluvitu/botai:0.4.1

O contêiner fica healthy em 1 a 2 s (medido em 2026-10-08, macOS arm64). Confira de fora:

curl -fsS http://127.0.0.1:8790/saude
{
"ok": true,
"formato": 1,
"motor": "0.4.1"
}

As rotas e os parâmetros estão em API HTTP.

Outra porta​

O HEALTHCHECK olha a porta 8790 de dentro do contêiner. Mude a porta de fora com o -p, não com --porta:

docker run --rm -p 9000:8790 ghcr.io/piluvitu/botai:0.4.1

O servidor passa a responder em http://127.0.0.1:9000.

A CLI pela imagem​

O ENTRYPOINT da imagem é o botai. O que vem depois do nome da imagem são os argumentos da CLI:

docker run --rm ghcr.io/piluvitu/botai:0.4.1 pessoa --semente 42 --hoje 2026-10-05
docker run --rm ghcr.io/piluvitu/botai:0.4.1 pessoas -n 3 --semente demo --hoje 2026-10-08 --formato csv --campos nome,cpf
docker run --rm ghcr.io/piluvitu/botai:0.4.1 validar cpf 634.132.403-07

A saída é a mesma da CLI instalada. O lote em CSV, por exemplo:

botai pessoas -n 3 --semente demo --hoje 2026-10-08 --formato csv --campos nome,cpf
nome,cpf
Isabela Freitas Santos,550.160.642-96
Vitória Alves Carvalho,843.495.439-70
Lucas Gabriel Pereira Oliveira,750.346.866-19

E o validar:

botai validar cpf 634.132.403-07
válido

Os comandos estão em CLI.

O que tem dentro​

ItemValor
Usuáriosem root: uid=1000(node)
RuntimeNode v24.21.0, como PID 1
ENTRYPOINT["botai"]
CMD["serve","--host","0.0.0.0","--porta","8790"]
EXPOSE8790
HEALTHCHECKwget -q -T 2 -O /dev/null http://127.0.0.1:8790/saude; interval 30s, timeout 3s, start-period 5s, start-interval 1s, retries 3
Tamanho62,7 MB de conteúdo, 240 MB no disco (medido em 2026-10-08, macOS arm64)

O HEALTHCHECK usa GET: o servidor responde 405 a HEAD (veja Segurança e limites).

Encerrar​

O docker stop encerra o servidor em menos de 0,4 s, com código 0 (medido em 2026-10-08, macOS arm64).

Tags​

As tags publicadas são 0.3.0, 0.4.0, 0.4.1 e latest, que tem o mesmo digest da 0.4.1. Não existe tag de minor, como :0.4.

Fixe a versão exata. Mudar a pessoa que uma semente gera é versão major; na série 0.x, é a minor. Veja Versões e dourados.

A mesma pessoa​

A imagem gera a mesma pessoa que as outras portas, pelo HTTP e pela CLI: a semente verificador-1 com o hoje 2026-10-05 deu 43 de 43 campos iguais nas 15 saídas comparadas. Os 12 dourados conferem pelo HTTP da imagem.

Em CI, veja GitHub Actions. Ao lado da sua aplicação, veja docker compose.