TGTGInsightаналитика telegramLIVE / telegram public index
← DevOps
DevOps avatar

TGINSIGHT POST

Post #541

@DevOPSitsec

DevOps

Просмотры4,690Количество просмотров
Опубликован2 апр.02.04.2024, 10:12
Содержимое поста

Содержимое

🖥5 советов, как ускорить сборку образа Docker ⏩Совет 1. Можно ли избежать создания образов? Использование Docker не обязательно должно быть принципом «все или ничего». Вы можете использовать Docker для развертывания и создания образов для продакшн, но вам не обязательно использовать его в разработке. ⏩Совет 2. Структурируйте инструкции Dockerfile как перевернутую пирамиду. Каждая инструкция в вашем Dockerfile приводит к созданию слоя изображения. Docker использует слои для повторного использования работы. Слои кэшируются и их не нужно пересобирать, если: — Все предыдущие слои не изменяются. — В случае инструкции COPY: файлы/папки не изменяются. — В случае всех остальных инструкций: текст команды не изменяется. ⏩Совет 3. Копируйте только те файлы, которые необходимы для следующего шага. Представьте, что у нас есть следующий фрагмент Dockerfile: RUN mkdir /code COPY code code/ RUN pip install code/requirements.txt Каждый раз, когда что-либо в каталоге кода меняется, вторую строку необходимо запускать заново, а также каждую последующую строку. Вот как мы могли бы избежать повторного запуска этапа установки при каждом изменении кода: RUN mkdir /code COPY code/requirements.txt code/ RUN pip install code/requirements.txt COPY code /code ⏩Совет 4. Скачивайте меньше файлов. Во-первых, проверьте, не загружаете ли вы зависимости разработки, которые вообще не нужны вашему образу. Ещё нужно помнить про поведение менеджера пакетов на уровне ОС. Например, `apt`который используется в Ubuntu и Debian, по умолчанию устанавливает «рекомендуемые» пакеты. Вы можете избежать этого, добавив к apt-get install флаг --no-install-recommends ⏩Совет 5. Используйте BuildKit с новой функцией монтирования кэша. BuildKit — это новый механизм сборки образов, который можно использовать вместо стандартного Docker. С ним вы получаете больше параллелизма и эффективности кэширования, плюс новые интересные функции 📎Читать подробнее @DevOPSitsec