Docker BuildKit: ускорение сборки и кэширование

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

dockerbuildkitкэширование

👁 Многие разработчики знают, что Docker имеет стандартный механизм сборки, но не все знают о мощных возможностях Docker BuildKit. Включение BuildKit помогает значительно повысить производительность и эффективность работы с Docker, особенно когда у вас сложные многозадачные сборки.

📝 Включение BuildKit

Для того чтобы начать использовать BuildKit, достаточно включить его в конфигурации Docker. Это можно сделать, установив переменную окружения DOCKER_BUILDKIT=1. Теперь вы можете воспользоваться новыми возможностями при сборке образов.

📝 Оптимизация сборки с помощью кэширования зависимостей

Одной из самых мощных возможностей BuildKit является умное кэширование, которое сокращает время сборки при повторных запусках. Например, если вы собираете проект, который зависит от больших библиотек или других тяжелых слоёв, BuildKit будет использовать кэш для этих шагов, если исходные файлы не изменились. Вот пример, как это работает в Dockerfile:

# Использование кэширования слоёв для зависимостей
FROM golang:1.16 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download  # Эта команда использует кэш BuildKit для ускорения сборки

COPY . .
RUN go build -o myapp .

📝 Параллельные сборки

BuildKit позволяет использовать параллельные сборки, что может ускорить процесс, если у вас несколько зависимостей или слоёв в Dockerfile. Например, если вы используете несколько разных билдов для разных архитектур, BuildKit будет выполнять их одновременно, что сильно ускоряет процесс.

DOCKER_BUILDKIT=1 docker build --target prod --file Dockerfile .

❗️ Включение Docker BuildKit делает сборку значительно быстрее и эффективнее, что особенно полезно в крупных проектах, где время сборки критично.

tags: #docker #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот тёмного окна с кодом Dockerfile: показано DOCKER_BUILDKIT=1, команды кеширования зависимостей и сборки, логотип RECURA.
Пример Dockerfile и команд для включения BuildKit и кэширования зависимостей.

Читайте так же