Ugrás a tartalomhoz
← Blog'a dön

Docker build cache — 5 püf noktasıyla %70 daha hızlı CI

Nortinia monorepo CI süresi beş Dockerfile püf noktasıyla 12 dakikadan 3,5 dakikaya indi. Tam olarak neyin değiştiğini anlatıyoruz.

CI süresi teknik bir metrik değildir. Ekibinizin ne kadar deney yaptığını belirleyen süreçtir.

2025 yazında Nortinia monorepo CI'ı build başına 12 dakika sürüyordu. Eylülde 3,5 dakikaya indi. Aynı donanım, aynı runner — beş Dockerfile ve build yapılandırması değişikliği. Aşağıdaki liste somut ve etkisi ölçülebilir.

1. Çok aşamalı build — node_modules bir kez

Bir aşama npm/pnpm install için, bir diğeri build için, üçüncüsü runtime için. Bağımlılık aşaması yalnızca package.json değiştiğinde yeniden çalışır. Etkisi: build'lerin %40'ı bu adımı tamamen atlıyor, build başına ~4 dakika tasarruf.

2. BuildKit cache mount

RUN --mount=type=cache,target=/root/.pnpm-store pnpm install, katman geçersiz olsa bile pnpm deposunu canlı tutar. Yalnızca bir paket değiştiğinde diğer 400'ü yeniden indirmeyiz. Etkisi: build başına ~2 dakika.

3-5. Diğerleri

  • 3. Sıkı COPY sırası: nadiren değişen dosyalar altta, sık değişenler üstte — önce package.json, en son src/
  • 4. Genişletilmiş .dockerignore: node_modules, .git, coverage, .next — yalnızca build hızlanmıyor, imaj da 200 MB küçülüyor
  • 5. GitHub Actions cache dışa/içe aktarımı: cache-from ve cache-to bayraklarını kullandığınızda BuildKit cache'i CI çalıştırmaları arasında korunur

Beş püf noktası birlikte bizi 12 dakikadan 3,5 dakikaya indirdi. Ama asıl kazanç kazanılan zaman değil — ekibin artık günde 3 kat daha sık push yapması. Mühendisler 12 dakikalık build için 3 push'u biriktiriyordu; 3,5 dakikalık build ile 10 push gönderiyorlar. Daha fazla iterasyon, daha fazla deney, daha hızlı teslimat. CI süresi gerçek bir iş metriğidir.

Bir konuyu ele almamızı ister misiniz?

Bize yazın — bu konuda gerçek deneyimimiz varsa yayımlarız.