Pular para o conteúdo

engenharia

O cache da camada Docker não é o que você pensa que é

A maioria das configurações de cache do CI Docker gastam mais tempo transferindo o cache do que economizando ao usá-lo.

{autor} · {papel} · {data} · {minutos} {minutosLabel}

O conselho padrão é exportar seu cache de camada com cache-to e importá-lo com cache-from. Funciona. Para imagens grandes, também é frequentemente uma perda líquida, e os dados de tempo tornam isso óbvio quando você olha.

A transferência é o problema

Cada trabalho exporta o cache no final e o importa no início. Para um cache de camada de vários gigabytes, esse percurso de ida e volta pode exceder o tempo de construção que deveria ser salvo. A etapa de construção fica mais rápida e o trabalho fica mais lento.

A solução é parar de movê-lo

Uma instância persistente do BuildKit mantém o cache em seu próprio disco, onde o BuildKit já o deseja. Seu trabalho anexa, constrói, desvincula. Não há etapa de exportação porque não há nada para exportar.

Seu próximo build pode ser duas vezes mais rápido, pela metade do preço

Comece grátis. Sair é a mesma linha, e publicamos esse diff também.