image
Uso
rc image build --stack python
rc image build --stack python --stack go
rc image build --stack python,go
rc image build --all
| Flag | Descrição |
|---|---|
--stack | linguagem do catálogo; repetível ou separada por vírgula |
--all | todas as linguagens do catálogo |
Sem --stack nem --all, o comando falha com informe --stack ou --all. Linguagem fora do catálogo falha com E006.
Pelo Taskfile (que compila antes):
task image:build -- --stack python
task image:build -- --all
image prune
rc image prune # builds antigos, que nenhum nome aponta mais (o guest ou o start.sh mudaram, a chave mudou)
rc image prune --all # também as imagens e os packs que nenhuma máquina usa
Imagens fora do catálogo (rc machine create --image ...) usam o mesmo build, sem warmup.
Saída
Uma linha por linguagem:
python <caminho do ext4> cached=false elapsed=<tempo> <métricas do build>
cached=truequando a chave já existia no cache e nada foi reconstruído.- As métricas vêm da VM de build: tempo de extração, de warmup e de
mkfs, e o tamanho usado e do disco.
O que o build faz
- Baixa a imagem OCI com go-containerregistry (sem Docker) e achata as camadas num tar.
- Sobe uma VM de build Alpine 3.22.6 (tarball base oficial do Alpine, com sha256 conferido; e2fsprogs e GNU tar via
apk). - Dentro dela, como root: extrai o tar num tmpfs, injeta o guest e o
start.shem/opt/runner/, roda o warmup em chroot e gera o ext4 commkfs.ext4 -d. - Grava
<lang>-<chave>.ext4no cache e aponta o symlink<lang>.ext4para ele.
O porquê de cada etapa, a chave do cache e o warmup de cada linguagem estão em Imagens.
Quando reconstruir
A chave inclui o digest da imagem, o warmup, o build.sh, o start.sh e o guest. Depois de mudar qualquer um deles — inclusive recompilar o guest com outro código —, rode o build de novo: a chave muda sozinha e uma imagem nova é gerada.
Tempo
Na máquina medida (macOS 27.0.1, Apple Silicon), a imagem Python levou ~8–10 s, sendo 2,7 s de pull e achatamento. A Go
levou 35 s, 28 deles no mkfs.ext4. O build precisa de rede (pull e warmup); a VM do job não tem.