Production Dockerfile: Optimization
Production Dockerfile: optimallashtirish
Xavfsizlikdan tashqari, production Dockerfile tezlik va hajm bo'yicha ham optimallashtirilishi kerak. Buni chamadon yig'ishga o'xshating: sayohatga sayoz ketayotganda faqat kerakli narsalarni olasiz, hamma narsani emas — bu ham yengilroq, ham tezroq tekshiruvdan o'tadi.
1. .dockerignore fayli
.git
*.md
*_test.go
node_modules/
.env.gitignorega o'xshab, .dockerignore — COPY . . chaqirilganda e'tiborsiz qoldiriladigan fayllarni belgilaydi. Test fayllari, hujjatlar, .git tarixi — bularning barchasi yakuniy image uchun keraksiz, faqat qurish vaqtini sekinlashtiradi va image hajmini kattalashtiradi.
2. Kompilyatsiya bayroqlari bilan hajmni kichraytirish
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o server .CGO_ENABLED=0 — Go dasturini C kutubxonalariga bog'lanmagan holda kompilyatsiya qiladi, bu esa uni scratch kabi "bo'sh" image'larda ishlatish imkonini beradi. -ldflags="-s -w" — kompilyatsiya qilingan fayldan debug ma'lumotini olib tashlaydi, bu binary hajmini sezilarli (ba'zan 30% gacha) kichraytiradi — production'da debug ma'lumoti odatda kerak emas.
3. Qurish keshini CI/CD'da ham ishlatish
"Understanding Docker Layer Caching" darsida ko'rgan qatlam keshlash g'oyasi faqat sizning shaxsiy kompyuteringizda emas, avtomatlashtirilgan qurish tizimlarida (CI/CD, masalan GitHub Actions) ham ishlaydi — agar to'g'ri sozlansa. Bu build vaqtini daqiqalardan soniyalargacha qisqartirishi mumkin, ayniqsa katta jamoalarda kunlik o'nlab marta qurilganda.
Key Takeaway
Key Takeaway:
.dockerignore keraksiz fayllarni chiqarib tashlaydi, CGO_ENABLED=0 va -ldflags="-s -w" binary hajmini kichraytiradi, qatlam keshi esa CI/CD'da ham ishlatilganda qurish vaqtini sezilarli qisqartiradi.
NEXT UP
Production Dockerfile: Operations