DevOps 6 мин22 мая 2024 г.
Docker Multi-stage Builds: Худеем образы в 10 раз
Избавляемся от ENOSPC (No space left on device) и ускоряем деплой.
Практика из реальных проектов
Технический разбор без воды
Можно перейти к услуге и смете
Работаем с бизнесом в РБ и СНГ
Проблема толстых образов
Когда вы пишете COPY . . и RUN npm install, в финальный образ попадает папка node_modules с кучей мусора (DevDependencies, исходники TypeScript и т.д.). В итоге образ весит гигабайты, сервер быстро забивается, а деплой длится вечность.
Решение: Multi-stage сборка
Мы разделяем Dockerfile на этапы (stages):
- Deps: Устанавливаем все зависимости (включая dev).
- Builder: Копируем исходники, собираем проект (TypeScript -> JS, Next.js build).
- Runner: Берем чистый минималистичный образ (node:alpine), копируем туда только скомпилированные файлы из Builder'а и только production-зависимости.
Вуаля! В финальном образе нет исходников и тяжелых тулзов для сборки. Размер уменьшается на 80-90%.
Хотите решить похожую задачу?
Подскажем, с чего начать: разработка, поддержка, инфраструктура или внедрение. Обсудим задачу, ограничения и следующий практический шаг для вашего проекта.
Практика из реальных проектов
Технический разбор без воды
Можно перейти к услуге и смете
Работаем с бизнесом в РБ и СНГ