Если Docker-образ Django-приложения разросся до 1,5 GB — это не «ну и ладно», а прямой сигнал на ревизию. Большая часть веса обычно сидит в трёх местах: build-зависимости, мусор из Python-пакетов и лишние файлы из контекста сборки.
Что обычно даёт минус сотни мегабайт:
- multi-stage build: собираем wheel’ы в одном слое, в финальный образ тащим только runtime;
- `pip install --no-cache-dir`, чтобы не хранить колёса и кэш;
- `.dockerignore`, иначе в образ легко улетают `.git`, локальные артефакты, тесты, `node_modules`;
- базовый image slim/alpine — если зависимости не упираются в glibc/сборку бинарей;
- удаление dev-пакетов сразу после сборки, а не «потом как-нибудь».
Практика показывает: с 1,5 GB до 900 MB — это вполне реальный диапазон без магии. А если аккуратно разнести build/runtime и почистить контекст, можно выжать ещё больше. Плюс бонусом: быстрее `docker build`, меньше трафика в CI/CD и быстрее деплой 🚀
DevTools Radar
@DevToolsRadarPro
Если Docker-образ Django-приложения разросся до 1,5 GB — это не «ну и ладно», а прямой сигнал на ревизию. Боль
Этот пост опубликован в Telegram-канале DevTools Radar. Подписаться можно по ссылке: @DevToolsRadarPro.