tgoop.com/devopslib/62
Last Update:
🔥 Как я ускорил сборку Docker-образов на CI в 3 раза
Недавно столкнулся с тем, что пайплайн на GitLab CI начал тормозить при сборке Docker-образов. Типа 7–10 минут на каждый пуш — слишком дорого. Начал копать и нашёл несколько простых, но эффективных трюков:
1. Мультистейдж-сборка
Убрал всё лишнее из финального образа. Разделил билд и рантайм. Теперь в конечный образ не попадают dev-зависимости и тулзы типа curl
, gcc
, make
.
2. Кэш на уровне CI
Прописал в .gitlab-ci.yml
использование docker build --cache-from
. Сохраняю промежуточные образы в GitLab Registry — reuse слоёв реально работает.
3. Оптимизация Dockerfile
Самое простое: сначала COPY package*.json
, потом RUN npm install
, и только потом COPY . .
— уменьшает количество слоёв, которые нужно пересобирать.
4. Переход на BuildKit
Включил DOCKER_BUILDKIT=1
. Поддержка параллельных билдов и продвинутый кэш сделали своё дело.
5. Анализ с dive
Прогнал образы через dive
— нашёл пару мест, где слои были гигантские из-за временных файлов и неправильного порядка команд.
💡 В итоге время сборки упало с ~9 минут до 3. С учётом количества пушей в день - это как снять кирпич с сервера.
Подпишись 👉@devopslib
BY Библиотека девопса | DevOps, SRE, Sysadmin
Share with your friend now:
tgoop.com/devopslib/62