Yazılım ekiplerinin GitHub Actions ve GitLab CI boru hatlarında her commit sonrası saatlerce beklediği Docker imaj derlemelerini BuildKit kalıcı NVMe katman önbelleği, Depot SaaS ve self-hosted VDS derleyicisi ile 10 kat hızlandırın; CI faturalarından binlerce dolar tasarruf sağlayın.
14 dk → 2.5 dk derleme süresi
Boşa giden CI bekleme süresi kurtarıldı
6,160 dakika / ay kullanım
CI dakikaları + mühendislik verimliliği
| Derleyici Çözümü | Altyapı Türü | Önbellek Türü | Ort. Derleme Süresi | Aylık CI Faturası | Mühendis Zaman Maliyeti | Toplam Aylık Yük |
|---|---|---|---|---|---|---|
| Self-Hosted VDS BuildKit Runner | Kendi VDS Sunucunuz (Sabit Maliyet) | Doğrudan Yerel NVMe SSD (Sıfır Ağ Gecikmesi) | 2.5 dk | $20 (Sabit) | $250 | $270 |
| Depot.dev Bulut BuildKit (16 vCPU) | Yönetilen Uzak BuildKit SaaS | Kalıcı Bulut NVMe SSD Önbelleği | 2.1 dk | $47 | $200 | $247 |
| GitHub Larger Runner (4 vCPU) | Geçici Bulut VM ($0.016/dk) | GHA Cache (Geçici Disk) | 10.5 dk | $74 | $1950 | $2024 |
| Standart GitHub Actions (2 vCPU) | Geçici Bulut VM (Ephemeral) | GHA Cache (Ağ Üzerinden Yavaş İndirme) | 14 dk | $33 | $2550 | $2583 |
`pnpm` paket deposunu ve Next.js derleme önbelleğini yerel NVMe diskte saklar; paket indirmelerini sıfırlar.
# syntax=docker/dockerfile:1.7
FROM node:22-alpine AS base
WORKDIR /app
# Bağımlılıkları kalıcı BuildKit önbelleği ile yükleyin (Cold start'ı önler)
FROM base AS deps
COPY package.json pnpm-lock.yaml ./
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store \
corepack enable pnpm && pnpm install --frozen-lockfile
# Derleme aşaması
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN --mount=type=cache,id=next-cache,target=/app/.next/cache \
corepack enable pnpm && pnpm run build
# Üretim imajı
FROM base AS runner
ENV NODE_ENV=production
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
CMD ["node", "server.js"]GitHub Actions işçisini kendi VDS BuildKit sunucunuza bağlayarak 1.5 dakikada derleme tamamlar.
# .github/workflows/docker-build.yml
name: Hızlı Docker Derleme (VDS BuildKit)
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Kendi VDS BuildKit sunucunuza bağlanın (Kalıcı NVMe SSD önbellek)
- name: Set up Docker Buildx (Remote VDS Daemon)
uses: docker/setup-buildx-action@v3
with:
driver: remote
endpoint: tcp://vds.example.com:1234
- name: Build and Push with Local Cache
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: registry.example.com/app:latest
cache-from: type=registry,ref=registry.example.com/app:buildcache
cache-to: type=registry,ref=registry.example.com/app:buildcache,mode=maxStandart bulut CI işçileri (örneğin GitHub Actions ubuntu-latest) her iş akışında sıfırdan (ephemeral) geçici sanal makineler tahsis eder. Bu makineler üzerinde koşan Docker motoru tamamensoğuk önbellekle (cold cache) başlar. Her derlemede npm install,cargo build veya Go modülleri baştan indirilir ve derlenir. Ağ üzerinden GHA önbelleği indirmek ise sık sık 15-30 MB/s sınırlarına takılarak dakikalarca zaman kaybına ve yüksek faturalara yol açar.
Modern Docker BuildKit motoru, Dockerfile içerisinde RUN --mount=type=cachedirektifi kullanmanıza olanak tanır. Paket yöneticisi önbelleği (pnpm, pip, maven, cargo) imaj katmanına yazılmadan doğrudan ana makinenin NVMe SSD diskinde saklanır. Böylece bağımlılık indirme süreleri sıfıra iner.
Aylık yalnızca $15 - $25 tutarında 8 vCPU ve NVMe diskli bağımsız bir Linux VDS kiralayarak üzerinde kalıcı bir buildkitd servisi koşturabilirsiniz. GitHub Actions iş akışınızdocker buildx --driver remote ile doğrudan bu sunucuya bağlanır ve derlemeler 15 dakikadan 1.5 dakikaya düşer.
5 kişilik bir mühendislik ekibinde günde 20 derleme yapıldığında, derleme süresinin 14 dakikadan 2 dakikaya indirilmesi ayda 40 saatin üzerinde odak kaybını (context switching) ve bekleme süresini önler. Sabit VDS maliyeti sayesinde ayda 50.000 dakika derleme yapsanız dahi ekstra tek bir kuruş dakika aşım ücreti ödemezsiniz.