Middle
Qaysi hollarda ko'p bosqichli (multi-stage) qurilish ishlatiladi?
sobes.tech AI
AIdan javob
Docker'da ko'p bosqichli qurilish (multi-stage build) quyidagi hollarda qo'llaniladi:
- Yakuniy tasvirning hajmini kamaytirish: Birinchi (yoki oraliq) qurilish qatlamida kompilyatsiya, testlar yoki boshqa qurilish bosqichlari uchun zarur bo'lgan asboblar joylashgan (masalan, kompilyator, qurilish bog'liqliklari). Ikkinchi (yakuniy) qatlamda faqat ilovani ishga tushirish uchun zarur bo'lgan artefaktlar (kompilyatsiya qilingan kod, bajariladigan fayllar, ish vaqti kutubxonalari) ko'chiriladi. Bu yakuniy tasvirga keraksiz bog'liqliklar va qurilish asboblarini kiritishni oldini oladi va uning hajmini sezilarli darajada kamaytiradi.
- Qurilish va ishga tushirish bosqichlarini ajratish: Aniq ajratish qurilish jarayonini tushunishni va xatolarni aniqlashni osonlashtiradi. Siz kodni kompilyatsiya qilish, testlarni bajarish, lint qilish uchun bosqichlar bo'lishi mumkin va faqat keyin tayyor ilova bilan yakuniy tasvirni yaratish mumkin.
- Xavfsizlikni oshirish: Yakuniy tasvir minimal zarur komponentlarni o'z ichiga oladi, bu hujum yuzasini kamaytiradi. Qurilish asboblari va manba kodi, xavfsizlik zaifliklarini o'z ichiga olishi mumkin, ishlab chiqarishda ishlatiladigan tasvirga kiritilmaydi.
- Qurilish tezligini oshirish (ba'zi hollarda): Oraliq tasvirlar keshga olinishi mumkin va faqat oxirgi bosqichlarda o'zgarishlar bo'lsa, hamma narsa noldan qayta qurilmaydi.
- Qurilish jarayonini birlashtirish: Ilovani qurish va Docker tasvirini yaratish bitta avtomatlashtirilgan jarayon bo'lib, CI/CD pipeline'larini soddalashtiradi.
Go uchun misol:
# Qurilish bosqichi
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
# Bajariladigan faylni kompilyatsiya qilish
RUN go build -ldflags="-s -w" -o myapp .
# Yakuniy bosqich
FROM alpine:latest
WORKDIR /app
# Oldingi bosqichdan faqat bajariladigan faylni ko'chirish
COPY --from=builder /app/myapp .
# Ilovani ishga tushirish uchun buyruq
CMD ["./myapp"]