Исходная сборка:
🔹Полноценный базовый образ Python 3.9
🔹Множество инструкций RUN, создающих лишние слои
🔹Отсутствие .dockerignore
🔹Одностадийная сборка со всеми зависимостями
Применённые оптимизации:
1. Более лёгкий базовый образ
- Перешли на Python 3.9-alpine
- Образ стал легче на ~95% и быстрее скачивается
2. Оптимизация слоёв
- Объединили связанные команды
- Убрали избыточные инструкции RUN
3.
.dockerignore- Исключили venv, кэши и временные файлы
- Сократили контекст сборки
4. Multi-stage build
- Отдельный stage для сборки зависимостей
- Production-stage с минимальным runtime-набором
Результат:
🔹Размер образа: 47,7 MB (с 588 MB)
🔹Снижение размера: −91,89%
🔹Более быстрый старт контейнера
🔹Меньше времени деплоя и меньше места в registry
Маленькие оптимизации дают большой эффект. Каждый сэкономленный мегабайт ускоряет каждый билд.
👉 DevOps Portal
