⬇️ Наглядная шпаргалка, сохраняй!
Размер Docker-образа — это прямая техническая характеристика, которая влияет на:
🟢скорость CI/CD
🟢время деплоя
🟢cold start контейнеров
🟢объём передаваемых данных
🟢стабильность сборки
В реальном примере образ удалось уменьшить с 588 MB до 47.7 MB —
минус почти 92% размера. Без хаков, без экзотики.
4 приёма, которые реально работают:
1️⃣ Базовый образ — ключевое решение
python:3.9 тащит за собой всё подряд:системные утилиты, документацию, dev-пакеты.
Переход на
python:3.9-alpine даёт:* кратное уменьшение размера
* быстрее pull
* меньше лишнего в проде
Это самый большой выигрыш одним действием.
2️⃣ Оптимизация Docker-слоёв
Каждый
RUN, COPY, ADD — это отдельный слой.Много инструкций → раздутый образ.
Рабочее правило:
🖱 объединяй связанные команды
🖱 удаляй временные файлы в том же RUN
Меньше слоёв → меньше размер → быстрее сборка.
3️⃣ .dockerignore — обязательный минимум
Без него в build context попадает всё:
.git, .venv, кеши, временные файлы.Это:
🔤увеличивает контекст
🔤замедляет билд
🔤ломает кеширование
.dockerignore должен быть всегда. Это база.
4️⃣ Multi-stage build — стандарт для продакшена
Одна из самых эффективных техник.
Схема:
🟣stage 1 — сборка и зависимости
🟣stage 2 — только runtime
В финальном образе:
* нет build-инструментов
* нет лишних библиотек
* только то, что реально нужно для запуска
📊 Итог
➡️ 588 MB → 47.7 MB
➡️ −91.89% размера
➡️ быстрее CI
➡️ быстрее деплой
➡️ быстрее старт контейнеров
✅ Вывод
Оптимизация Docker — это не микрооптимизация.
Это нормальная инженерная практика.
Маленькие улучшения накапливаются
и начинают работать на каждом билде и деплое.
👍 Сохраняй, пригодится!
#doc #cheatsheet
