بچه ها چرا هیچکس دربارهٔ این ویژگی مخفی داکر حرف نمیزنه؟
من یه اشتباه ۳ ساله رو تازگیا فهمیدم...
کشف شوکهکننده:
وقتی فهمیدم docker build --squash چقدر زندگی رو تغییر میده:
سایز ایمیج از ۱.۲GB به ۳۵۰MB رسید
اسکن امنیتی ۶۰٪ سریعتر شد
زمان deploy نصف شد
چطور کار میکنه؟
docker build --squash -t my-app .
این فلگ تمامی لایهها رو فشرده میکنه به یک لایه واحد!
مقایسه جالب:
معیار قبل بعد
سایز ۱.۲GB ۳۵۰MB
زمان اسکن ۸ دقیقه ۳ دقیقه
تعداد لایهها ۴۷ ۱
۳ ترفند طلایی:
۱.ترکیب با multi-stage builds:
FROM node:16 as builder
WORKDIR /app
COPY . .
RUN npm build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
۲.استفاده با BuildKit:
DOCKER_BUILDKIT=1 docker build --squash ...
۳. پاکسازی imageهای squashed نشده:
docker image prune --filter label=squashed=false
هشدار مهم:
این قابلیت مشکلاتی داره:
دیباگ سختتر میشه (چون تاریخچه لایهها از بین میره)
برای CI/CD نیاز به Docker 17.05+ دارید
@DevTwitter |