172 похожих чатов

Привет. Подскажите, используете ли вы кеширование при сборке образов?

23 ответов

3 просмотра

Все, кто пользуются докером в той или иной степени используют кэширование при сборке образов. В чём суть вопроса?

Dmitry- Автор вопроса
Georgy Borodin
Все, кто пользуются докером в той или иной степени...

Я общаюсь с девопсом в своей команде. У нас проект на Node, подготовка образа включает установку зависимостей и билд проекта. Я предлагаю разделить этапы установки зависимостей и этап сборки проекта, потому что зависимости устанавливаются в несколько раз дольше, чем выполняется сборка. Зависимости меняются редко, поэтому я вижу смысл в том, чтобы кешировать этап установки зависимостей. Девопс смеётся и говорит, что это всё ерунда

Dmitry
Я общаюсь с девопсом в своей команде. У нас проект...

Докер-образы собираются из инструкций в докерфайле по порядку. Результат выполнения почти каждой команды (слой) кэшируется. И лежит себе, пока его не потрут

Какое конкретно? Дефолтное само используется обычно, новые фичи билд кита надо настраивать

Dmitry
Я общаюсь с девопсом в своей команде. У нас проект...

Это вроде как рекомендуемм способ для ноды, вернее для npm/yarn

Dmitry- Автор вопроса
Vladimir Chernyshev
Какое конкретно? Дефолтное само используется обычн...

Кеширование слоёв. Популярная ли это практика среди девопсов в проектах? Целесообразно ли его отключать?

Dmitry
Кеширование слоёв. Популярная ли это практика сред...

Не целесообразно. Он очень хорошо работает. Целесообразно даже пуллить предыдущий билд на чистую ноду

Dmitry- Автор вопроса
Georgy Borodin
А как девопс-то этот проект собирает?

sudo docker build --pull \ --no-cache \ --build-arg SSH_KEY="\$key" \ --build-arg IMAGE_TAG=$KEBAB_BRANCH \ -t \${full_tag_name} \ -f deploy/Dockerfile .

Dmitry
sudo docker build --pull \...

Ну вот пусть no-cache уберёт. Докер без лишней помощи может проверить изменения в окружении для сборки. Ну и SSH ключ запекать в сборку – вообще не очень

Да, где-то пушим в реджистри как слои, конкретно за node_modules - пушим кеш в s3.

Dmitry
Спасибо

А вообще есть несколько вещей тут потенциально нехороших: ––pull – сдёргивать всегда свежую версию контейнера (FROM node:latest условный может быть написан, и всё похерит). Девопсу, наверное, лучше пинить версии, в особенности, если это продакшен --no-cache вместе c --build-arg SSH_KEY кстати имеет смысл: можно терморектально отгородиться от утечки данных в кэш (он собирает с грязным трюком, но приложил подорожник, вот и никакого вам кэша)

Dmitry- Автор вопроса
Georgy Borodin
Докер-образы собираются из инструкций в докерфайле...

Не подскажешь, как правильно чистить кеш? Так, чтобы удалялись только старые полные образы, но не промежуточные слои с зависимостями, которые давно не обновлялись, но всё ещё актуальны?

Dmitry
Не подскажешь, как правильно чистить кеш? Так, что...

Если собираете с --no-cache (могу ошибаться), слоёв никаких и так нет

Georgy Borodin
Если собираете с --no-cache (могу ошибаться), слоё...

Игнорирует локальные промежуточные слои.

Devourer
Игнорирует локальные промежуточные слои.

А сам их пишет всё равно? Я вот не помню, а в доке очень кратко

Georgy Borodin
А сам их пишет всё равно? Я вот не помню, а в доке...

When the ‘–no-cache’ option is passed to ‘Docker build…’, then that build will always start from scratch, writing a new image to the file system even if nothing in the Dockerfile has changed. This is guaranteed to not reuse stale results, but will always take the maximum amount of time. Всё же пишет.

Dmitry
А если включим кеш?

Можно сделать несколько вещей: – Начать хранить сикреты безопасно (не билдить с ними) и наслаждаться кэшем докера – Если это удобно – собрать свой образ с зависимостями для основы, положить в свой реджистри и юзать его, обновляя централизованно. А везде, куда сикреты пихаете, поступать на свой страх и риск

Dmitry- Автор вопроса
Georgy Borodin
Можно сделать несколько вещей: – Начать хранить си...

SSH-ключ используется при сборке образа для копирования репозитория из Github. Для авторизации в Github нужны логин и пароль или SSH-ключ. Не подскажешь, как правильно нужно в таком случае поступать?

Dmitry
SSH-ключ используется при сборке образа для копиро...

https://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066 А лучше всего пользоваться каким-то CI/CD, который централизованно всё скачает (или сам будет описан в репозитории проекта, как в GitLab)

Dmitry- Автор вопроса

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
https://habr.com/ru/companies/domclick/articles/500978/ Добрый день, подскажите, пожалуйста, насколько хорошая практика сделать вот такую структуру эксчейнджей и очередей для...
Sergey
5
Карта сайта