DEVOPSLIB Telegram 62
🔥 Как я ускорил сборку 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
👍3



tgoop.com/devopslib/62
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

How to Create a Private or Public Channel on Telegram? Just as the Bitcoin turmoil continues, crypto traders have taken to Telegram to voice their feelings. Crypto investors can reduce their anxiety about losses by joining the “Bear Market Screaming Therapy Group” on Telegram. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. A vandalised bank during the 2019 protest. File photo: May James/HKFP. Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week.
from us


Telegram Библиотека девопса | DevOps, SRE, Sysadmin
FROM American