Ugrás a tartalomhoz
← Vissza a Naplóhoz

Docker build cache — 70%-kal gyorsabb CI 5 trükkel

A Nortinia monorepo CI-je 12 percről 3,5 percre csökkent 5 Dockerfile trükkel. Mutatjuk pontosan, mi változott.

A CI idő nem technikai adat. Az a folyamat, ami meghatározza, hogy a csapat mennyit kísérletezik.

A Nortinia monorepo CI-je 2025 nyarán 12 perc volt build-enként. Szeptemberre 3,5 perc. Nem új hardware, nem más futó — 5 Dockerfile és build config változás. Az alábbiak konkrétan, számlázható hatással.

1. Multi-stage build — node_modules egyszer

Egy stage az npm/pnpm install-ra, egy másik a build-re, egy harmadik a futtatásra. A deps stage csak akkor fut újra, ha a package.json változik. Hatás: az átlag build 40%-ában ez a lépés kimarad, ez önmagában ~4 perc / build.

2. BuildKit cache mount

A RUN --mount=type=cache,target=/root/.pnpm-store pnpm install arra jó, hogy a pnpm store még akkor is megmarad, ha a layer invalidálódik. Ha csak egy package változik, nem töltjük le újra a 400 csomagot. Hatás: ~2 perc / build.

3-5. A többi

  • 3. COPY lépések szigorú sorrendben: ritkán változó fájlok legalul, gyakran változók felül — pl. package.json előbb, src/ utoljára
  • 4. .dockerignore kiterjesztés: node_modules, .git, coverage, .next — nem csak a build gyorsabb, hanem a képméret is -200 MB
  • 5. GitHub Actions cache export/import: a BuildKit cache CI futások között megmarad, ha cache-from és cache-to flag-ekkel dolgozol

Az 5 trükk együtt 12 → 3,5 percre vitt minket. A legnagyobb haszon azonban nem az idő, hanem az, hogy a csapat most 3x többször pusholható a nap folyamán. A 12 perces build-re 3 pushot vártak, 3,5 percesre 10-et. Ez több iteráció, több kísérletezés, gyorsabb feature delivery. A CI idő valódi üzleti metrika.

Kiemelten érdekel egy téma?

Írj nekünk, és ha van tapasztalatunk benne, publikáljuk.